[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 |