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