페이지 교체 알고리즘 계산기 (FIFO·LRU·LFU·OPT)
참조열과 프레임 수를 넣으면 FIFO·LRU·LFU·OPT·2차 기회의 페이지 부재 횟수와 단계별 프레임 상태를 계산합니다. 프레임을 늘렸는데 부재가 늘어나는 벨레이디의 이상 현상을 직접 확인할 수 있습니다.
공백이나 쉼표로 나눠 넣습니다. 500개까지 다룹니다.
물리 메모리에 동시에 담을 수 있는 페이지 수입니다
페이지 부재
12회
부재율 60% · 적중 8회 · 참조 20회 · 프레임 3개 · LRU (최근 최소 사용)
단계별 프레임 상태
| 참조 | 7 | 0 | 1 | 2 | 0 | 3 | 0 | 4 | 2 | 3 | 0 | 3 | 2 | 1 | 2 | 0 | 1 | 7 | 0 | 1 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 프레임 1 | 7 | 7 | 7 | 2 | 2 | 2 | 2 | 4 | 4 | 4 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| 프레임 2 | · | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 3 | 3 | 3 | 3 | 3 | 3 | 0 | 0 | 0 | 0 | 0 |
| 프레임 3 | · | · | 1 | 1 | 1 | 3 | 3 | 3 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 7 | 7 | 7 |
| 부재 | F | F | F | F | F | F | F | F | F | F | F | F |
세로가 프레임, 가로가 참조 순서입니다. 파랗게 굵은 칸이 그때 새로 올린 페이지이고, F가 붙은 열이 페이지 부재입니다. 표가 넓으면 옆으로 밀어 보실 수 있습니다.
같은 참조열을 다섯 알고리즘에 돌린 결과 (프레임 3개)
| 알고리즘 | 부재 | 부재율 | 이상 현상 |
|---|---|---|---|
| FIFO (선입선출) | 15 | 75% | 생길 수 있음 |
| LRU (최근 최소 사용) | 12 | 60% | 생기지 않음 |
| LFU (최소 빈도 사용) | 13 | 65% | 생기지 않음 |
| OPT (최적 · 미래를 앎) | 9 ← | 45% | 생기지 않음 |
| 2차 기회 (Clock) | 14 | 70% | 생길 수 있음 |
OPT는 미래를 다 알고 고르므로 실제로는 쓸 수 없고, 다른 알고리즘이 얼마나 좋은지 재는 하한선 노릇만 합니다. 어떤 알고리즘도 OPT보다 부재를 줄일 수 없습니다.
프레임 수를 늘려 가며 본 부재 횟수 — LRU (최근 최소 사용)
| 프레임 | 부재 | 앞 줄 대비 |
|---|---|---|
| 1개 | 20 | — |
| 2개 | 17 | -3 |
| 3개 | 12 | -5 |
| 4개 | 8 | -4 |
| 5개 | 7 | -1 |
| 6개 | 6 | -1 |
| 7개 | 6 | 0 |
OPT에서 앞으로 다시 안 쓰는 페이지가 여럿이면 먼저 들어온 것을 내보냅니다. 부재 횟수는 어느 것을 골라도 같지만 표에 남는 모양이 달라집니다.
빈 프레임이 있으면 교체하지 않고 번호가 작은 자리부터 채웁니다.
사용 방법
- 1페이지 참조열을 공백이나 쉼표로 나눠 넣습니다.
- 2프레임 수를 고릅니다. 물리 메모리에 동시에 담을 수 있는 페이지 수입니다.
- 3교체 알고리즘을 고르면 단계별 프레임 상태와 페이지 부재 횟수가 나옵니다.
- 4아래 비교표에서 같은 참조열을 다섯 알고리즘에 돌린 결과를 견줍니다.
- 5프레임 수를 늘려 가며 본 표에서 부재가 늘어나는 구간(벨레이디의 이상 현상)이 있는지 확인합니다.
자주 묻는 질문
프레임을 늘렸는데 페이지 부재가 오히려 늘어나는 현상입니다. 메모리를 더 줬는데 성능이 나빠지는 것이라 직관에 반해서 발견자 이름을 붙여 부릅니다. 참조열 1 2 3 4 1 2 5 1 2 3 4 5를 FIFO로 돌리면 프레임 3개일 때 9회, 4개일 때 10회로 늘어납니다. 이 계산기의 «벨레이디 이상 현상» 예제를 FIFO로 돌리시면 직접 보실 수 있습니다.
LRU가 스택 알고리즘이기 때문입니다. 프레임이 n개일 때 메모리에 들어 있는 페이지 집합이 언제나 n+1개일 때의 부분집합이 된다는 성질인데, 부분집합이면 프레임을 늘렸을 때 적중하던 것은 계속 적중하므로 부재가 늘어날 수 없습니다. LFU와 OPT도 스택 알고리즘이고, FIFO와 2차 기회는 아닙니다. 「LRU에서는 안 일어난다」가 아니라 「스택 알고리즘이라 일어날 수 없다」가 정확한 설명입니다.
쓸 수 없습니다. 앞으로 어떤 페이지를 언제 참조할지 미리 알아야 하기 때문입니다. 그럼에도 계산하는 이유는 하한선이기 때문입니다 — 어떤 알고리즘도 OPT보다 페이지 부재를 줄일 수 없으므로, 지금 쓰는 알고리즘이 OPT에 얼마나 가까운지가 개선 여지를 말해 줍니다. 교재의 표준 참조열에서 OPT는 9회, LRU는 12회, FIFO는 15회입니다.
구현 비용 때문입니다. 참조할 때마다 시각을 기록하거나 페이지 목록의 순서를 바꿔야 하는데, 이것을 메모리 참조마다 하는 것은 하드웨어 도움 없이는 너무 비쌉니다. 그래서 실제로는 참조비트 하나만 두고 근사하는 2차 기회(Clock) 계열을 씁니다. 성능은 LRU에 조금 못 미치지만 비용이 훨씬 쌉니다.
FIFO인데 참조비트가 1이면 한 번 봐줍니다. 시곗바늘을 돌리며 후보를 보고, 참조비트가 0이면 그것을 내보내고 1이면 0으로 내린 뒤 지나갑니다. 모두 1이어도 한 바퀴를 돌면 전부 0이 되므로 두 바퀴 안에 반드시 하나가 잡힙니다. 새로 올린 페이지의 참조비트를 1로 둘지 0으로 둘지에 따라 답이 달라지므로 이 계산기는 그것을 고를 수 있게 해 두었습니다.
동점 처리 규약이 다르기 때문일 가능성이 큽니다. 이 계산기는 LFU에서 참조 횟수가 같으면 먼저 들어온 것을 내보내는데, 가장 오래 안 쓴 것을 내보내는 규약을 쓰는 자료도 있어 값이 갈립니다. OPT에서 앞으로 다시 안 쓰는 페이지가 여럿일 때도 먼저 들어온 것을 내보냅니다. 이 경우 부재 횟수는 어느 것을 골라도 같지만 표에 남는 모양이 달라집니다. 2차 기회라면 새 페이지의 참조비트 설정을 먼저 확인해 보세요.
피할 수 없는 부재입니다. 프레임이 비어 있을 때는 어떤 알고리즘을 써도 그 페이지를 처음 올려야 하므로, 서로 다른 페이지가 k종류라면 최소 k번의 부재는 반드시 생깁니다. 그래서 알고리즘을 견줄 때는 전체 부재보다 «교체로 생긴 부재»를 보는 편이 뜻이 있습니다. 이 계산기는 둘을 나눠 보여 줍니다.
다루지 않습니다. 이 계산기는 참조열 하나와 프레임 수가 정해진 상태에서 교체 알고리즘만 비교합니다. 스레싱은 여러 프로세스가 프레임을 나눠 쓰면서 서로의 페이지를 밀어내는 상황이라 프로세스별 프레임 할당 정책이 함께 필요하고, 워킹셋과 프리페이징도 별도 모형이 있어야 합니다.
전송되지 않습니다. 계산은 모두 브라우저 안에서 이루어지고 넣은 값은 이 기기에만 남습니다.
알아두면 좋은 점
- LFU에서 참조 횟수가 같으면 먼저 들어온 것을 내보냅니다. 다른 규약을 쓰는 자료와는 값이 갈립니다.
- OPT에서 앞으로 다시 안 쓰는 페이지가 여럿이면 먼저 들어온 것을 내보냅니다. 부재 횟수는 같고 표의 모양만 달라집니다.
- 2차 기회에서 새로 올린 페이지의 참조비트는 기본값이 1입니다. 0으로 두는 자료도 있어 화면에서 바꿀 수 있게 했습니다.
- 빈 프레임이 있으면 교체하지 않고 번호가 작은 자리부터 채웁니다. 부재 횟수에는 영향이 없습니다.
- 벨레이디의 이상 현상은 FIFO와 2차 기회에서만 생깁니다. LRU·LFU·OPT는 스택 알고리즘이라 생기지 않습니다.
- 참조열 500개, 프레임 12개까지 다룹니다. 스레싱·워킹셋·프리페이징은 범위 밖입니다.
함께 보면 좋은 도구
마지막 검증: 2026년 9월 1일 · 결과는 참고용 추정치입니다.