프로세스의 커널 가상 메모리에 프로세스별 데이터가 포함되어 있습니까?

프로세스의 커널 가상 메모리에 프로세스별 데이터가 포함되어 있습니까?

CS:APP 책에 있는 이 그림을 잘 이해하지 못합니다.

텍스트

이는 프로세스의 커널 가상 메모리가 다른 프로세스와 어떻게 다른 영역을 가지고 있는지 보여줍니다.

이것은 커널이 다음을 의미합니까?프로세스 A, 컨텍스트에서 프로세스별 데이터를 볼 수 없습니다.프로세스 B?

이는 커널이 컨텍스트 스위치를 통해 이 데이터에 액세스할 수 있는 유일한 방법입니다.프로세스 B그리고 사용두번째페이지 테이블 또는 다음에서 얻을 수 있습니다.프로세스 A?

답변1

귀하의 혼란은 이해할 수 있습니다. 그림과 같이 다이어그램이 잘못되었습니다.이 책의 정오표:

피. 829, 그림 9.26. 주소 공간의 커널 부분은 모든 프로세스에서 동일합니다. 각 프로세스마다 커널 가상 메모리의 다른 부분이 없습니다.

(구체적으로, 다이어그램에 사용된 아키텍처인 x86-64에서(참조 참조 %rsp) 커널은 물리적 메모리의 완전한 매핑을 가지므로 메모리의 모든 페이지는 어쨌든 커널의 가상 메모리에 나타납니다.64비트 Linux 프로세스의 가상 메모리 커널 부분에는 무엇이 있습니까?)

관련 정보