가상메모리 기법에서는 페이지 폴트 발생률을 최소화하여 스래싱(Thrasing)을 줄여야 한다.
페이지 폴트로 발생하는 오버헤드가 너무 크다.
1) 어떤 페이지를 교체할지 정해야 한다.
2) 페이지 입출력 발생
3) 입출력 진행 될 동안 다른 프로세스 스케줄링 및 문맥교환
운영체제는 가상메모리를 운용하기 위한 여러가지 정책을 실시한다.
반입정책(Fetch Policy)
페이지를 언제 주기억장치에 적재할 것인가?
1) 요구페이징(demand paging) : 해당 페이지의 일부가 참조될 때, 지역성의 원리로 미리 페이지를 반입
2) 선페이징(prepaging) : 보조기억장치에 연속적으로 저장되어 있는 페이지를 한꺼번에 반입 ( 유용성 X )
교체정책(Replacement Policy)
어떤 페이지를 교체할 것인가? 가까운 미래에 참조될 가능성이 가장 적은 페이지어야 한다. 지역성의 원리를 이용한다.
프레임 잠금 ( Frame Locking )
잠금 비트를 유지해서 페이지가 교체되지 않도록 표시
기본 알고리즘 ( P.390 훑어보기 )
최적 정책 (Optimal) : 미래에 참조될 시간이 가장 긴 페이지를 교체 , 가장 최고 성능을 보인다. ( 현실 구현 불가능 , 성능 비교를 위한 기준 )
LRU ( Least Recently Used ) : 가장 오랫동안 참조되지 않은 페이지를 교체한다. 최적 정책과 가장 유사한 성능을 보인다.
FIFO ( First In First Out ) : 가장 오래 전에 반입 된 페이지는 사용하지 않을거라 판단.
클록 정책 ( Clock Policy ) : LRU와 비슷한 성능을 내는 페이지 교체 알고리즘
교체 후보 프레임들이 환형버퍼에 들어간다. 프레임 포인터가 시계방향으로 지나가면서 참조된 적 있는 프레임은 1, 최근에 참조된적 없는 프레임은 0으로 나타낸다.
교체정책은 프레임 수가 많아질수록 사실상 의미가 없어진다. 프레임 수가 많으면 가장 구현이 쉬운 교체정책 알고리즘을 선택하는 것이 좋다.
페이지 버퍼링( Page Buffering )
교체 대상으로 선정된 페이지를 바로 교체하지 않고 변경 이력을 검사한다. 변경 이력이 없는 프레임은 가용페이지 리스트에 변경 이력이 있는 페이지는 변경 페이지 리스트에 연결시켜 관리한다.
가용리스트는 주기억장치에 유지하고 변경페이지리스트는 클러스터로 묶여서 한번에 기록되어 입출력 시간을 크게 줄일 수 있다. 페이지를 하나씩 바로 디스크에 적재시키지 않고 주기억장체에 상주시킴으로써, 적은 비용으로 적재집합에 페이지를 복귀시킬수 있다.
'CS > OS' 카테고리의 다른 글
[OS] PCB란 무엇일까? (0) | 2024.01.15 |
---|---|
[OS] 프로세스(Process)란 무엇일까? (0) | 2024.01.15 |
[운영체제] 페이지 크기가 미치는 영향 (0) | 2021.11.16 |
[운영체제] TLB ( Translation Lookaside Buffer ) (0) | 2021.11.16 |
[운영체제] 가상메모리 기법 (0) | 2021.11.15 |