운영체제 | 페이지 교체 정책

Faithful Dev·2025년 1월 26일

컴퓨터 공학

목록 보기
36/81

페이지 교체 정책(Page Replacement Policy)

페이지 교체 정책은 요구 페이징 시스템에서 물리 메모리가 가득 찬 경우, 새로운 페이지를 적재하기 위해 기존 페이지 중 어느 것을 제거할지 결정하는 알고리즘이다.

FIFO (First-In, First-Out)

개념

  • 가장 먼저 메모리에 적재된 페이지를 가장 먼저 교체하는 방식.
  • 큐(Queue)를 사용하여 페이지를 관리.

장점

  • 구현이 단순하며, 시간 순서에 따라 처리하기 쉽다.

단점

  • Belady's Anomaly: 프레임 수가 증가해도 페이지 폴트가 감소하지 않는 현상이 발생할 수 있다.
  • 오래된 페이지가 꼭 덜 사용된 페이지는 아닐 수 있다.

OPT (Optimal Page Replacement)

개념

  • 앞으로 가장 오랫동안 사용되지 않을 페이지를 교체하는 방식.
  • 이론적으로 가장 효율적인 알고리즘으로, 페이지 폴트 수를 최적화.

장점

  • 최적의 성능(최소 페이지 폴트).

단점

  • 미래의 페이지 접근 패턴을 미리 알아야 하므로 현실적으로 구현이 불가능.
  • 주로 비교 기준으로 사용됨.

LRU (Least Recently Used)

개념

  • 가장 오랫동안 사용되지 않은 페이지를 교체.
  • 과거 접근 기록을 기반으로 페이지 교체를 결정.

장점

  • OPT에 근접한 성능을 제공하며, 현실적으로 구현 가능.

단점

  • 오버헤드: 각 페이지의 최근 사용 시간을 저장하거나 갱신해야 하므로 구현 비용이 높다.
  • 자주 갱신되는 데이터 구조가 필요(예: 스택, 해시맵 등).

LFU (Least Frequently Used)

개념

  • 사용 빈도가 가장 적은 페이지를 교체.
  • 페이지가 메모리에 머누는 동안 참조된 횟수를 기준으로 판단.

장점

  • 사용 빈도가 낮은 페이지를 제거하여 페이지 교체 효율성을 높임.

단점

  • 최근에 참조된 페이지가 사용 빈도가 낮을 경우 부적절한 교체가 발생할 수 있음.
  • 오래된 페이지가 높은 참조 횟수를 유지할 수 있어 잘못된 판단 가능(이를 개선한 LFU 변형 알고리즘도 존재).

NUR (Not Recently Used)

개념

  • 하드웨어가 제공하는 참조 비트(Reference Bit)변경 비트(Dirty Bity)를 사용하여 페이지 교체를 결정.
  • 참조 비트와 변경 비트로 페이지를 4가지 그룹으로 분류:
    • (0, 0): 최근에 참조되지 않았으며 변경되지 않음(최우선 제거)
    • (0, 1): 최근에 참조되지 않았지만 변경됨
    • (1, 0): 최근에 참조되었지만 변경되지 않음
    • (1, 1): 최근에 참조되었으며 변경됨(제거 우선순위 낮음)

장점

  • 구현이 비교적 간단하며, 하드웨어 지원이 있는 경우 효율적.

단점

  • 참조 및 변경 비트가 시간 경과에 따른 사용 패턴을 완벽히 반영하지 못할 수 있음.

정리

  1. FIFO: 가장 단순한 방식(오래된 페이지를 제거).
  2. OPT: 이론적으로 최적(미래를 알아야 함).
  3. LRU: 최근 사용되지 않은 페이지 교체(효율적이지만 구현 비용 높음).
  4. LFU: 사용 빈도가 낮은 페이지 교체(참조 횟수 기반).
  5. NUR: 참조/변경 비트를 사용하여 교체(단순하고 효율적).

Thrashing (스레싱)

개념

  • 과도한 페이지 폴트로 인해 CPU 시간이 거의 모두 페이지 교체 처리에 소비되는 상태.
  • 프로세스가 필요한 페이지를 계속 디스크에서 로드해야 하는 상황이 반복됨.

원인

  • 물리 메모리가 부족하여 한 프로세스에 필요한 최소 페이지 수를 유지할 수 없을 때 발생.
  • 다수의 프로세스가 동시에 실행되면서 메모리 경쟁이 심해질 때.

결과

  • 시스템 성능이 급격히 저하되며, 처리량이 거의 0에 가까워짐.

해결 방안

  1. 워크셋(Working Set) 정책: 프로세스가 자주 참조하는 페이지 집합(워크셋)을 메모리에 유지하여 스레싱 방지.
  2. 다단계 큐(Multi-Level Queue) 사용: 프로세스 우선순위를 기반으로 메모리 자원을 배분.
  3. 적응형 페이지 교체: 페이지 폴트율을 기반으로 메모리 할당 크기를 동적으로 조정.
profile
Turning Vision into Reality.

0개의 댓글