사용자 모드에서 주소 변환을 수행하는 방법은 무엇입니까? 사용자가 별도의 페이지 테이블을 갖고 있다면 어디에 저장되나요? 또한 하드웨어 페이지 테이블 탐색 메커니즘을 갖춘 시스템에서 사용자는 커널 주소 공간에 저장된 페이지 테이블에 어떻게 액세스합니까?
답변1
커널은 각 프로세스에 대한 페이지 테이블을 설정합니다. 가상 주소에서 물리적 주소로의 매핑은 하드웨어의 메모리 관리 장치(MMU)에 의해 수행됩니다. 이는 사용자 모드 코드에 투명하게 수행됩니다. 사용자 모드는 페이지 테이블을 변경하지 않으며 커널에만 표시됩니다.
프로세스의 가상 주소 공간은 다양한 속성을 가진 영역으로 나뉩니다. 일부 영역은 읽기 전용이고 일부 영역은 읽기-쓰기이며 대부분의 가상 주소는 전혀 매핑되지 않습니다. 액세스 위반은 커널에 의해 처리됩니다. 예를 들어 프로세스가 실제 메모리 프레임에 매핑되지 않은 메모리 위치에 액세스하면 예외가 발생합니다. 이 예외(트랩)는 프로세스를 종료하거나 신호를 보내거나 커널이 페이지에 대한 매핑을 투명하게 생성할 수 있는 커널 코드에 의해 처리됩니다.
페이지가 교체되었기 때문에 투명하게(사용자 모드 코드에) 페이지 매핑이 발생할 수 있습니다. 이 경우 소위 페이지 오류 처리기가 페이지를 사용 가능한 물리적 RAM 프레임에 매핑하고 페이지가 스왑 공간에서 읽혀지도록 준비합니다. 페이지가 복원되면 프로세스가 다시 실행되도록 예약되며 아무 일도 일어나지 않은 것처럼 프로세스가 계속 실행될 수 있습니다.