Demand Paging

정하윤·2022년 9월 14일
0

Demand Paging

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

  • I/O 양의 감소
  • Memory 사용량 감소
  • 빠른 응답 시간
  • 더 많은 사용자 수용

Vail / Invaild bit 의 사용

Invaild 의 의미

  • 사용되지 않는 주소 영역인 경우
  • 페이지가 물리적 메모리에 없는 경우
  • 처음에는 모든 page entry가 invaild로 초기화
  • address tanslation 시에 invaild bit이 set되어 있으면 ⇒ “page fault”

page fault

  • invaild page를 접근하면 MMU가 trap을 발생시킴
    • Kernel mod로 들어가서 page fault handler가 invoke됨
  • 다음과 같은 순서로 page fault를 처리한다
  1. Invaild reference ? (eg. bad address, protection violation) ⇒ abort process

  2. Get an empty page frame

  3. 해당 페이지를 disk에서 memory로 읽어온다.

    1. disk I/O 가 끝나기까지 이 프로세스는 CPU를 preemt 당함

    2. Disk read가 끝나면 page tables entry 기록 ,

      vaild/invaild bit=”vaild”

    3. ready queue에 process를 insert → dispatch later

  4. 이 프로세스가 CPU를 잡고 다시 running

  5. 아까 중단되었던 instrucyion 재개

대부분은 page fault가 일어나지 않음 만약 일어났다라면 엄청난 시간 소비 p( OS & HW page fault overhead +[swap page out if needed] +swap page in + OS & HW restart overhead)

LFU Algorithm

LFU : 참조 횟수가 가장 적은 페이지를 지움

  • 최저 참조 횟수인 page가 여럿 있는 경우
  • LFU 알고리즘 자체에서는 여러 page 중 임의로 선정한다
  • 성능 향상을 위해 가장 오래 전에 참조된 page를 지우게 구현할 수도 있다

장단점

  • LRU처럼 직전 참조 시점만 보는 것이 아니라 장기적인 시간 규모를 보기 때문에 page의 인기도를 좀 더 정확히 반영할 수 있음
  • 참조 시점의 최근성을 반영하지 못함
  • LRU보다 구현이 복잡함

  • LRU: 가장 오래된 Page 1 삭제

  • LFU: 가장 작은 Page 4 삭제

0개의 댓글