← 목록으로

[정처기 실기] 페이지 교체 (LRU)

정보처리기사 실기 — 페이지 교체 (LRU)


0. 한눈에 보기

항목내용
출제 포인트페이지 참조 순서 + 프레임 수페이지 부재(Page Fault) 횟수 계산
핵심 알고리즘LRU (Least Recently Used) — 가장 오래 사용되지 않은 페이지를 교체
자주 틀리는 점프레임이 아직 비어 있을 때도 부재로 세는지, 히트인데 교체하는지

한 줄 요약: 메모리에 없으면 부재(O). 프레임이 꽉 찼으면 가장 오래 전에 쓴 페이지를 보낸다.


1. 문제

다음 페이지 참조 순서를 참고하여, 할당된 프레임 수가 3개일 때 LRU 알고리즘페이지 부재 횟수를 구하시오.

페이지 참조 순서

7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
조건
알고리즘LRU
프레임 수3
구하는 것페이지 부재 횟수

정답: 12회


2. 핵심 개념

2.1 용어 정리

용어영어의미
페이지Page프로세스를 나눈 고정 크기 블록
프레임Frame물리 메모리에 페이지를 올려두는 칸
페이지 참조Page ReferenceCPU가 요청한 페이지 번호
페이지 히트Page Hit요청한 페이지가 이미 프레임에 있음
페이지 부재Page Fault요청한 페이지가 프레임에 없음 (디스크에서 가져와야 함)

2.2 LRU (Least Recently Used)

  • 프레임이 가득 찬 상태에서 새 페이지가 들어오면
  • 가장 오래 전에 참조된(사용된) 페이지를 교체한다.
  • 최근에 쓴 페이지일수록 오래 남아 있을 가능성이 높다고 보는 방식.

2.3 부재 판정 규칙 (시험용)

상황부재 여부
빈 프레임에 처음 적재부재(O) — 처음 들어오는 것도 부재로 센다
이미 프레임에 있는 페이지 재참조히트(X)
프레임이 꽉 찼는데 새 페이지 필요부재(O) + LRU 페이지 교체

정처기 실기에서는 처음 적재도 페이지 부재로 계산하는 경우가 많다.


3. 풀이 방법 (4단계)

Step 1 — 표 준비

가로: 참조 순서 / 세로: 프레임 3칸 / 마지막 열: 부재 여부

Step 2 — 한 칸씩 진행

  1. 참조한 페이지가 프레임에 있는지 확인
  2. 히트 → 프레임 내용 유지, 최근 사용 시각 갱신
  3. 부재 → 빈 칸 있으면 적재 / 없으면 LRU 페이지 제거그 칸에 새 페이지 적재

표를 쓸 때는 제거된 페이지가 있던 칸에 새 페이지를 넣으면 단계별로 따라가기 쉽다.

Step 3 — LRU 판별

프레임에 있는 페이지마다 마지막으로 참조된 순서를 기억한다.

예) 14번 직전 프레임 {0, 3, 2} 에서 0 → 11번째 참조 3 → 12번째 참조 2 → 13번째 참조 → 가장 오래된 0을 교체

Step 4 — 부재 횟수 합산

표에서 부재(O) 개수를 센다.


4. LRU 단계별 풀이

O = 페이지 부재 / X = 페이지 히트 / - = 빈 프레임

#참조프레임1프레임2프레임3부재교체(LRU)
177--O
2070-O
31701O
42201O7 제거
50201X
63203O1 제거
70203X
84403O2 제거
92402O3 제거
103432O0 제거
110032O4 제거
123032X
132032X
141132O0 제거
152132X
160102O3 제거
171102X
187107O2 제거
190107X
201107X

페이지 부재 횟수: 1, 2, 3, 4, 6, 8, 9, 10, 11, 14, 16, 18 → 12회


5. 핵심 구간 해설

5.1 4~6번 — 첫 교체 구간

7 → 0 → 1 → 2(부재, 7 제거) → 0(히트) → 3(부재, 1 제거)
  • 4번에서 프레임이 {7,0,1}로 가득 참
  • LRU는 7 (1번째에 마지막 사용) → 2 적재
  • 5번 0은 이미 있으므로 히트
  • 6번 3은 없음 → LRU 1 (3번째 참조 이후 미사용) 제거

5.2 8~11번 — 연속 부재 구간 (주의)

4(부재) → 2(부재) → 3(부재) → 0(부재)

이 구간은 참조가 겹치지 않아 연속 4회 부재가 발생한다.

#상황LRU 제거결과
84 진입2 (4번째 참조 이후 미사용)4 | 0 | 3
92 재진입3 (6번째 참조 이후 미사용)4 | 0 | 2
103 재진입0 (7번째 참조 이후 미사용)4 | 3 | 2
110 재진입4 (8번째 참조 이후 미사용)0 | 3 | 2

10번을 히트로 착각하기 쉽다. 9번 직후 4 \| 0 \| 2이므로 3은 없고 부재다.

5.3 14~18번 — 마무리 구간

1(부재) → 2(히트) → 0(부재) → 1(히트) → 7(부재)
  • 14번: 0 \| 3 \| 2 상태에서 1 요청 → LRU 0 (11번째 참조 이후 미사용) 제거 → 1 \| 3 \| 2
  • 15번: 2 히트1 \| 3 \| 2 유지
  • 16번: 0 요청 → 프레임에 없음 → LRU 3 (12번째 참조 이후 미사용) 제거 → 1 \| 0 \| 2
  • 17번: 1 히트1 \| 0 \| 2 유지
  • 18번: 7 요청 → LRU 2 (15번째 참조 이후 미사용) 제거 → 1 \| 0 \| 7

6. 시험에서 자주 틀리는 포인트

실수올바른 처리
빈 프레임 적재를 히트로 봄처음 들어오는 것도 부재(O)
히트인데 페이지 교체이미 있으면 교체 없음, 최근 사용만 갱신
10번을 히트로 착각9번 직후 4 | 0 | 23부재
LRU를 “먼저 들어온 순”으로 봄그건 FIFO. LRU는 가장 오래 전에 참조된 페이지
교체 후 칸을 섞어 적음제거된 페이지 자리에 새 페이지를 넣어 일관되게 추적

7. 다른 알고리즘과 비교 (참고)

같은 조건(프레임 3, 동일 참조 순서)에서 알고리즘만 바꾸면 부재 횟수가 달라진다.

알고리즘교체 기준특징
FIFO가장 먼저 들어온 페이지구현 단순, Belady 현상 가능
LRU가장 오래 사용 안 한 페이지지역성 반영, 이 문제 정답 12
OPT앞으로 가장 오래 안 쓸 페이지이론상 최적, 실제 불가

시험 문제마다 알고리즘 이름을 정확히 확인한 뒤 풀 것.


8. 빠른 풀이 템플릿

[준비] 참조 순서 적기 / 프레임 N칸 / 부재 카운터 = 0 각 참조마다: 1) 프레임에 있나? → YES: 히트, 최근 사용 갱신 2) 없나? → 부재 +1 - 빈 칸 있음 → 그냥 적재 - 꽉 참 → LRU 페이지 제거 후 적재 마지막에 부재 합계 확인 </think>

StrReplace