클럭 알고리즘

IT 위키

클럭 알고리즘(Clock algorithm)은 페이지 교체 알고리즘 중 하나로, LRU(Least Recently Used) 알고리즘을 근사화한 방식이다. 하드웨어적으로 효율적인 구현이 가능하며, 운영체제에서 널리 사용된다. 원형 큐 형태의 구조를 사용해 마치 시계의 초침처럼 순환하며 페이지를 검사한다는 의미에서 "클럭"이라는 이름이 붙었다.

1 개념[편집 | 원본 편집]

클럭 알고리즘은 각 페이지마다 1비트의 참조 비트(reference bit)를 유지한다. 이 비트는 페이지가 참조될 때마다 1로 설정되며, 페이지 교체가 필요할 때 이를 기준으로 교체 대상을 판단한다.

2 동작 방식[편집 | 원본 편집]

1. 각 페이지 프레임은 원형 큐로 연결되고, 참조 비트와 함께 관리됨

2. 페이지 폴트가 발생하면, "초침"이 가리키는 페이지부터 확인

3. 참조 비트가 0이면 → 해당 페이지를 교체

4. 참조 비트가 1이면 → 0으로 초기화하고 다음 페이지로 이동

5. 교체 대상이 결정될 때까지 반복

3 예시[편집 | 원본 편집]

페이지 프레임 수: 4 프레임 상태: [A1, B1, C0, D1] → C의 참조 비트가 0이므로 C가 교체 대상이 됨

4 개선형: Second-Chance 알고리즘[편집 | 원본 편집]

  • FIFO 기반 교체 대상에서 참조 비트가 1이면 제거하지 않고 기회를 한 번 더 줌
  • 클럭 알고리즘은 Second-Chance를 순환 큐로 구현한 형태

5 장점[편집 | 원본 편집]

  • LRU와 유사한 효과를 하드웨어 없이 구현 가능
  • 간단한 구조, 낮은 오버헤드
  • 실제 시스템에서 많이 사용됨 (예: Linux)

6 단점[편집 | 원본 편집]

  • 정확한 LRU가 아니므로 참조 순서를 완전히 반영하지는 못함
  • 페이지 수가 많을 경우, 교체 대상 탐색에 시간이 걸릴 수 있음

7 실제 활용[편집 | 원본 편집]

  • UNIX 계열 운영체제의 페이지 교체 구현
  • Linux의 기본 페이지 교체 알고리즘 중 하나
  • 일부 시스템은 클럭 + Aging 알고리즘 혼합 사용

8 같이 보기[편집 | 원본 편집]

9 참고 문헌[편집 | 원본 편집]

  • Silberschatz, A., Galvin, P. B., & Gagne, G. (2020). Operating System Concepts. Wiley
  • Tanenbaum, A. S., & Bos, H. (2014). Modern Operating Systems. Pearson
  • Linux Kernel Documentation - Page Replacement Algorithms