[OS] Lecture 10. Virtual Memory Management (4_6) - kibitzing/EnGrow GitHub Wiki

유튜브 링크


진구

  • 오버헤드를 줄이기 위해 더 간단하게 만듦
    • 참조된 빈도 기반
  • 더 단순화
    • 최근에 봤는가?
      • 레퍼런스 비트 & 업데이트 비트
  • 더 단순화 (클록 알고리즘, 실제로 쓰였음)
    • 레퍼런스 비트만

세영

알고리즘 방법 장점 단점
Min Page fault frequency를 최소화. 가장 오랫동안 참조되지 않을 페이지를 교체 최적의 기법 가장 오랫동안 참조되지 않을 페이지를 알 수 없음 → 구현 불가능 (성능 비교 대상으로 사용)
Random 무작위로 교체 부하가 적고 간단함 좋은 방법은 아님, 비교 대상으로 사용 (이것보단 좋아야 한다)
FIFO 가장 오래된 page를 교체 간단한 방법 page 적재 시간을 기록해야 함, 자주 사용되는 페이지가 교체될 가능성이 높음, locality에 대한 고려가 없음
LRU (Least recently used) 가장 오랫동안 참조되지 않은 page를 교체 Locality를 잘 활용, Min 알고리즘과 가장 비슷한 성능 page 참조 시마다 시간을 기록해야 함 (간소화된 시간 기록으로 어느정도 해결), Loop에 필요한 page frame 크기보다 작은 수의 frame이 할당된 경우 page fault가 급격히 증가
LFU (Least frequently used) 가장 참조 횟수가 적은 page를 교체 Locality를 활용, LRU 대비 적은 overhead 최근 적재된 page가 교체될 가능성이 높음, 참조 횟수 누적 overhead
NUR (Not used recently) 최근에 사용되지 않은 page를 교체 LRU보다 적은 overhead  
Clock Page frame을 순차적으로 가리키는 pointer (시침)을 사용하여 교체 reference bit로 Locailty를 활용 먼저 적재된 page가 교체될 가능성이 높음
Second Change Clock + update bit