OS

[OS] 페이지 관리 방법

뜨는 해 2020. 9. 27. 22:26

 

주 기억 장치와 캐시는 굉장히 작은 메모리로 운영된다.

왜냐면 굉장히 비싸기 때문인데, 이 때문에 속도가 느린 보조기억장치에서 주 기억장치로 메모리를 불러와서 데이터를 처리한다.

 

이 때, 램을 같은 크기의 블록으로 나누어 관리하는데 이 블록을 페이지라고 한다.

 

어떤 프로세스가 데이터 접근을 필요로 할 때, 만약 필요로 하는 데이터가 주기억장치에 존재할 경우 그것을 cache hit라고 하며, 없을 경우 cache miss라고 한다.

 

캐시에 데이터가 존재하면 따로 보조기억장치로부터 데이터를 가져올 필요가 없으므로 처리속도가 단축된다.

만약 데이터가 없을 경우 보조기억장치에서 데이터를 가져와야하므로, 처리속도가 cache hit보다 느릴 수 밖에 없다.

 

또한 이러한 페이지들은 주기억장치에서 계속 있을수만은 없기 때문에(다른 메모리도 주기억 장치로 올라올 수 있으므로) 이러한 페이지들을 교체해야하는 순간이 온다.

 

그럼 어떻게 교체하는 지 그에 따른 알고리즘이 있는데, 그것을 알아보려고 한다.

 

 

Least Recently Used - LRU


 

대표적인 페이지 교체 알고리즘으로 "계속 쓰이는 것은 쓰일 것이고, 쓰이지 않는 것은 계속 쓰이지 않을 것이다"라는 이론을 기반으로 동작하는 알고리즘이다.

 

찾는 페이지의 부재가 일어났을 경우, 가장 쓰이지 않는 페이지를 삭제하고 새로 찾는 페이지를 기록하는 방법이다.

장점 단점
굉장히 효율적인 알고리즘 구현하기 쉽지 않음
Belady's Anomaly 로부터 안전하다. 구현시에 하드웨어의 지원이 필요할 수 있음

 

 

First In First Out - FIFO


 

FIFO 방법은 말 그대로 먼저 들어간 것이 먼저 나오는 방법으로 대표적인 자료구조인 Queue의 구조를 가지고 있다.

굉장히 간단한 페이징 관리 기법으로 구현도 쉽다.

 

장점 단점
이해하기 쉬움 페이지 부재가 자주 발생할 수 있고, 이미 사용중인 페이지도 메모리에서 삭제시킬 가능성이 있음
구현이 쉬움 Belady's anomaly 로부터 자유롭지 않음.

 


이외에도 가장 이상적인 페이지 교체 알고리즘인 OPT 알고리즘(미래 예측이 불가능 하므로 구현 불가능),

LRU의 변형판인 NRU 알고리즘 (최근 미사용 페이지 교체 알고리즘),

임의의 페이지를 골라 교체시키는 알고리즘 등이 있다.