Demand Paging


실제로 필요할 때 page를 메모리에 올리는 것

I/O 양의 감소

Memory 사용량 감소

빠른 응답 시간

더 많은 사용자 수용

Valid / Invalid bit의 사용

Invalid의 의미

사용되지 않는 주소 영역인 경우

페이지가 물리적 메모리에 없는 경우

처음에는 모든 page entry가 invalid로 초기화

address translation시에 invalid bit이 set되어 있으면

⇒ "page fault" : 요청한 페이지가 메모리에 없는 경우. 이때, CPU는 자동적으로 운영체제에게 넘어갑니다.

오른쪽은 backing store(swap area) : 당장 필요하지 않은 것들

G, H는 사용되지 않는 페이지

Page Fault


invalid page를 접근하면 MMU가 trap을 발생시킴 (page fault trap)

Kernel mode로 들어가서 page fault handler가 invoke됨

다음과 같은 순서로 page fault를 처리

  1. Invalid reference? (e.g. bad address, protection violation) ⇒ abort process
  2. Get an empty page frame. (없으면 뺏어옴 : replace)
  3. 해당 페이지를 disk에서 memory로 읽어옴
    1. disk I/O가 끝나기까지 이 프로세스는 CPU를 preempt 당함 (block)
    2. Disk read가 끝나면 page tables entry 기록, valid/invalid bit = "valid"
    3. ready queue에 process를 insert → dispatch later
  4. 이 프로세스가 CPU를 잡고 다시 running
  5. 아까 중단되었던 instruction을 재개