pintos3 {pdf} {pintos}


TLDR

페이지 테이블이 demand paging을 지원하기 위해서 spt를 구현하라. eviction policy를 담기 위한 mechanism인 frame table을 구현하라. OS의 swap파일의 현황을 체크하기 위하여 swap table을 구현하여라.

Supplemental Page Table

두 가지 목적이 있다.

Frame Table

Swap Table

bitmap 냄새가 난다.

swap slot: 현재 스왑된 페이지가 해당 공간을 점유하고 있는지 여부를 저장.

스왑파일은 페이지 단위로 관리가 되겠지? 블럭 단위도 페이지 단위와 일치하는지 알아야 한다.

Stack Growth

계속된 함수 호출로 인해 스택이 늘어나게 되면 페이지 폴트가 발생하게 될 것이다. 이 경우 적절한 스택 접근의 여부인지 확인할 필요가 있다. 현재로서는...

Memory Mapped Files

파일을 유저공간에 매핑하는 함수. 문제는 파일 적재가 게으르게 이루어진다는 점. 파일의 특성상 evict, process termination, 상황에서 파일에 write가 이루어져야 한다.

Where to page out / evict to?

frame table에 들어가야 할 정보: seek할 위치

suggested order

  1. frame table (why???)
  2. spt, page fault handler (lazily load code / data segments via page fault handler). 여기까지 하면 Project2때 했던 모든 테스트가 통과할 것임.
  3. stack growth, mapped files, page reclamation
  4. eviction with synchronization