-
프로세스가 메모리에 올라와 있지 않은 페이지를 접근하려고 하면 Page Table항목이 invaild로 설정되어있으므로 Page Fault Trap을 발생 시킨다.
- 프로세스에 대한 내부 테이블(일반적으로 PCB)을 검사해서 그 메모리 참조(reference)가 vaild/invaild 인지를 알아낸다. - User mode
- 만약 invaild한 page에 대한 참조라면 그 프로세스는 중단된다. 하지만 유효한 참조인데 페이지가 아직 메모리에 올라오지 않았다면, 그것을 디스크로부터 가져와야한다.(OS가 trap 발생; wait) - Kernel mode
- 빈 공간, 자유 프레임을 찾는다. - Kernel mode
- 디스크에 새롭게 할당된 frame으로 해당 page를 읽어 들이도록 요청한다. - Kernel mode
- 디스크 읽기가 끝나면, 이 페이지가 이제는 메모리에 있다는 것을 알리기 위해 페이지 테이블을 갱신하며, 프로세스가 유지하고 있는 내부 테이블을 수정한다.(vaild bit로 설정) - Kernel mode
- Trap에 의해 중단되었던 명령어를 다시 수행한다. - User mode
-
프로세스가 수행하는데 필요한 모든 페이지가 메모리에 올라올 때까지 필요할 때마다 Page Fault가 발생한다. 그래서 모든 Page가 적재되어 더이상 fault가 발생하지 않을 때 발생하지 않는다. 이것을 순수 요구 페이징이라고 한다.
-
프로그램들은 참조의 지역성이라는 성질을 가져서 프로그램의 어느 한 특정부분만 집중적으로 참조하여 요구페이징은 만족할만한 성적을 낸다.
-
Demand Paging기법은 Page Fault 후 명령어 처리를 이어서 할 수 있어야 한다