2013-05-08 1 views
1

페이지 오류 및 페이지 히트가 페이지 오류 예외 처리기에서 처리되는 방법에 대한 읽기에서 한 가지 분명하지 않았습니다. 프로세스가 공유 페이지를 사용 중이고 페이지 폴트가 발생하면 페이지 폴트 예외 핸들러가 페이지 폴트를 야기한 프로세스에 대한 페이지 테이블의 페이지 테이블 엔트리를 업데이트 할 때 페이지 폴트를 발생시키는 모든 프로세스 같은 페이지를 공유하는 다른 프로세스들? 주제에 대한 제 독서에서 오류가 발생한 프로세스에 대한 페이지 테이블의 페이지 테이블 항목 만 업데이트하는 것처럼 보이지만 다른 프로세스에서 페이지가 페이징되었음을 알 수 있습니까? 미리 감사드립니다!페이지 오류 예외 처리기 및 업데이트 페이지 테이블

답변

0

이것은 메모리 관리자의 디자인에서 해결해야 할 문제 중 하나입니다. 한 가지 가능한 디자인은 공유 할 수있는 모든 페이지에 대해 그림자 PTE를 갖는 것입니다. 프로세스가 공유 페이지에서 오류가 발생하면 메모리 관리자는 섀도 PTE를 확인합니다. 섀도 PTE가 상주하지 않으면 정상적인 방법으로 페이지 오류를 처리하여 페이지가 사용 가능할 때 오류 프로세스 PTE와 섀도 PTE를 모두 업데이트합니다. 그림자 PTE가있는 경우 그림자 PTE를 프로세스 PTE로 복사합니다. 프로세스 PTE는 프로세스가 실제로 페이지를 터치 할 때만 업데이트됩니다. 이것은 Windows가하는 방식입니다. Linux 지식은 제한적이지만, Linux 프로세스의 거의 모든 페이지가 언제든지 공유 될 수 있기 때문에 (포크로 인해) 나는 그들이 다른 방법으로 작업 할 수 있기를 기대합니다. 시스템의 모든 단일 페이지에 대해 그림자 PTE가 없어도 공유가 가능합니다.

이 모델에서는 비동기 페이지 오류 처리 기능이있는 경우 오류가 발생하는 동안 페이지에서 다른 프로세스 오류가 발생하는 경우를 처리해야하기 때문에 약간의 영리성이 필요합니다. 또한 페이징 아웃 사례를 처리해야합니다 . 이 경우 작업 집합에있는 페이지가있는 모든 프로세스를 거쳐 제거해야하며 일부 IPI 및 일부 책 유지가 필요할 수 있습니다.