Skip to main content

페이지 교체 알고리즘


페이지 교체 알고리즘이란?


페이지 교체 알고리즘 (page replacement algorithm)은 페이징 기법으로 메모리를 관리하는 운영체제에서, 페이지 부재가 발생하여 새로운 페이지를 할당하기 위해 현재 할당된 페이지 중 어느 것과 교체할지를 결정하는 방법이다.

페이지 교체 알고리즘에는 FIFO, 최적 페이지 교체, LRU, LFU, MFU 등이 있고, 이번에는 FIFO, 최적 페이지 교체, LRU 알고리즘에 대해 알아본다.


FIFO 알고리즘 (First In First Out)


  • 가장 간단한 알고리즘으로, 메모리에 올라온 지 가장 오래된 페이지를 교체한다
  • 각 페이지가 올라온 시간을 페이지에 기록하거나, 페이지가 올라온 순서를 큐 (Queue)에 저장하는 방식

장점

  • 가장 간단한 페이지 교체 알고리즘이다

단점

  • 위의 예시에서 2번 메모리처럼 활발히 사용되는 메모리가 0,3 queue 순서에 밀려 사라졌다 다시 메모리에 적재되는 현상이 나타날 수 있고, 이로인해 페이지 부재율이 높아지고 실행 속도가 떨어질 위험이 있다.

FIFO2

  • Belady의 모순

    Belady의 모순이란,
    페이지를 저장할 수 있는 페이지 프레임의 갯수를 늘려도 되려 페이지 부재가 더 많이 발생하는 모순



최적 페이지 교체 (Optimal Page Replacement, OPT)


  • 앞으로 가장 오랫동안 사용되지 않을 페이지를 교체하는 알고리즘이다
  • 프로세스가 앞으로 사용할 페이지를 미리 알아야하는 전제조건이 있다

  • 페이지 7의 경우, 18번째까지 가서 쓰일 것을 미리 알고 있기 때문에 페이지 2와 7을 교체한다 (4번째)
  • 페이지 1의 경우 올라와 있는 {2,0,1} 중 페이지 1이 14번째 참조로 가장 뒤에 쓰이기 때문에 페이지 1과 3을 교체한다 (6번째)

장점

  • 알고리즘 중 가장 낮은 페이지 부재율을 보장한다

단점

  • 모든 프로세스의 메모리 참조 계획을 미리 파악할 방법이 없기 때문에 구현의 어려움이 있다


LRU 페이지 교체 알고리즘 (Least Recently Used)


  • 가장 오래 사용되지 않은 페이지를 교체하는 알고리즘이다
  • 최적 알고리즘이 실제 구현이 어렵기 때문에, 최적 알고리즘의 방식과 비슷한 효과를 낼 수 있는 방법을 사용한 것이 LRU 알고리즘이다
  • LRU 알고리즘은 최적 알고리즘보다 페이지 교체 횟수가 높지만 FIFO 알고리즘 보다 효율적이다

  • 페이지 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

📦