페이지 교체 알고리즘
페이지 교체 알고리즘이란?
페이지 교체 알고리즘 (page replacement algorithm)은 페이징 기법으로 메모리를 관리하는 운영체제에서, 페이지 부재가 발생하여 새로운 페이지를 할당하기 위해 현재 할당된 페이지 중 어느 것과 교체할지를 결정하는 방법이다.
페이지 교체 알고리즘에는 FIFO, 최적 페이지 교체, LRU, LFU, MFU
등이 있고, 이번에는 FIFO, 최적 페이지 교체, LRU 알고리즘에 대해 알아본다.
FIFO 알고리즘 (First In First Out)
- 가장 간단한 알고리즘으로,
메모리에 올라온 지 가장 오래된 페이지를 교체
한다 - 각 페이지가 올라온 시간을 페이지에 기록하거나, 페이지가 올라온 순서를 큐 (Queue)에 저장하는 방식
이미지 출처 : https://medium.com/pocs/%ED%8E%98%EC%9D%B4%EC%A7%80-%EA%B5%90%EC%B2%B4-page-replacement-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-650d58ae266b
장점
- 가장 간단한 페이지 교체 알고리즘이다
단점
- 위의 예시에서 2번 메모리처럼 활발히 사용되는 메모리가 0,3 queue 순서에 밀려 사라졌다 다시 메모리에 적재되는 현상이 나타날 수 있고, 이로인해 페이지 부재율이 높아지고 실행 속도가 떨어질 위험이 있다.
- Belady의 모순
Belady의 모순이란,
페이지를 저장할 수 있는 페이지 프레임의 갯수를 늘려도 되려 페이지 부재가 더 많이 발생하는 모순
최적 페이지 교체 (Optimal Page Replacement, OPT)
앞으로 가장 오랫동안 사용되지 않을 페이지를 교체
하는 알고리즘이다- 프로세스가 앞으로 사용할 페이지를 미리 알아야하는 전제조건이 있다
이미지 출처 : https://medium.com/pocs/%ED%8E%98%EC%9D%B4%EC%A7%80-%EA%B5%90%EC%B2%B4-page-replacement-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-650d58ae266b
- 페이지 7의 경우, 18번째까지 가서 쓰일 것을 미리 알고 있기 때문에 페이지 2와 7을 교체한다 (4번째)
- 페이지 1의 경우 올라와 있는 {2,0,1} 중 페이지 1이 14번째 참조로 가장 뒤에 쓰이기 때문에 페이지 1과 3을 교체한다 (6번째)
장점
- 알고리즘 중 가장 낮은 페이지 부재율을 보장한다
단점
- 모든 프로세스의 메모리 참조 계획을 미리 파악할 방법이 없기 때문에 구현의 어려움이 있다
LRU 페이지 교체 알고리즘 (Least Recently Used)
가장 오래 사용되지 않은 페이지를 교체하는 알고리즘
이다- 최적 알고리즘이 실제 구현이 어렵기 때문에, 최적 알고리즘의 방식과 비슷한 효과를 낼 수 있는 방법을 사용한 것이 LRU 알고리즘이다
- LRU 알고리즘은 최적 알고리즘보다 페이지 교체 횟수가 높지만 FIFO 알고리즘 보다 효율적이다
이미지 출처 : https://medium.com/pocs/%ED%8E%98%EC%9D%B4%EC%A7%80-%EA%B5%90%EC%B2%B4-page-replacement-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-650d58ae266b
- 페이지 2의 경우 직전의 페이지 부재(page 4)에서 페이지 2가 바로 다음에 사용될 것을 모르기 때문에 {2,0,3} 중 가장 오랫동안안 사용되지 않았던 페이지 2를 교체한다 (9번째)
- 페이지 0의 경우 가장 오랫동안 사용되지 않았던 페이지 4를 페이지 0과 교체한다. (11번째)
장점
- 많은 운영체제가 채택한 알고리즘이며 좋은 알고리즘이라고 평가 받고있음
단점
- 프로세스가 주기억장치에 접근할 때마다 참조된 페이지에 대한 시간을 기록해야 함
면접에 나올 수 있는 질문
Q. 페이지 교체 알고리즘이란?
A. 페이징 기법으로 메모리를 관리하는 운영체제에서, 페이지 부재가 발생하여 새로운 페이지를 할당하기 위해 현재 할당된 페이지 중 어느 것과 교체할지를 결정하는 방법
Q. Input과 알고리즘이 주어졌을 때 페이지 부재 횟수 구하기
A. Input이 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1 일 경우,
FIFO : 15회
최적 페이지 교체: 9회
LRU: 12회
Q. FIFO와 LRU 알고리즘에 적합한 자료구조는 무엇인가?
A. FIFO는 메모리에 올라온 지 가장 오래된 페이지를 교체하는 방식으로 FIFO 방식으로 동작되는 큐(Queue)의 사용이 적합하고,
LRU의 경우 순위의 교체가 빈번하게 이루어지므로 배열이나 우선순위 큐 대신 연결리스트(Linked List)로 구현하는 것이 적합하다.
참고
기여자
Jongminfire
📦