Linux가 페이지 테이블을 어디에 저장하는지 알고 싶습니다. 커널 가상 메모리에 있습니까?
이는 가상 메모리 시스템과 관련이 있는 것 같습니다. 하지만 저는 이것에 익숙하지 않으므로 잘못된 방향으로 가고 있다면 알려주십시오. 이 질문에 스스로 대답하기 위해 나는 책에서 다음과 같은 내용을 읽었습니다.
(23.2 페이지 8)
...리눅스 가상 주소 공간은 사용자 부분과 커널 부분으로 구성됩니다...
...커널 부분은 프로세스 간에 동일합니다.
그렇다면 커널이 제공하는 주소 공간은 어떤 의미에서는 프로세스가 무언가를 공유하는 공간일까요? 그렇다면 페이지 테이블이 커널 가상 메모리에 저장되면 프로세스가 페이지 테이블을 공유할 수 있다는 의미일까요?
내가 읽은 책들:http://www.ostep.org
답변1
예, 페이지 테이블은 커널 주소 공간에 저장됩니다. 각 프로세스에는 프로세스 간에 주소 공간의 커널 부분을 공유하도록 설정된 자체 페이지 테이블 구조가 있습니다. 그러나 커널 주소 공간은 사용자 공간에서 접근할 수 없습니다. 사용자 공간 코드는 시스템 호출을 사용하여 제어된 방식으로 커널과 통신합니다. 성공적인 시스템 호출 후 프로세서는 커널 주소 공간을 사용할 수 있는 권한 있는 상태로 들어갑니다.