운영체제

페이지 교체

프로그램이 쓰려는 페이지가 물리 메모리에 없으면 디스크에서 가져와야 합니다. 이것을 페이지 폴트라고 합니다. 메모리 칸이 꽉 차 있으면 운영체제는 페이지 하나를 내보내야 하는데, 무엇을 내보내느냐에 따라 폴트 횟수가 크게 달라집니다.

참조열을 따라 메모리 프레임에 페이지가 들어오고 나가는 과정을 보여 주는 시뮬레이터

1. 프로그램이 요청할 페이지 순서와 메모리 칸 수를 정하세요

2. 교체 규칙을 고르세요

3. 요청을 하나씩 처리하세요

새로 올린 페이지 (폴트) 이미 있던 페이지 (히트)

같은 요청 순서에서 규칙별 페이지 폴트 횟수

[다음 요청 처리]를 누를 때마다 위쪽 요청 순서에서 한 칸씩 진행합니다. 각 열은 그 요청을 처리한 직후의 메모리 상태입니다.

세 가지 교체 규칙

FIFO는 가장 먼저 메모리에 들어온 페이지를 내보냅니다. 구현은 쉽지만, 자주 쓰는 페이지라도 오래전에 들어왔다는 이유로 쫓겨날 수 있습니다.

LRU는 가장 오랫동안 쓰지 않은 페이지를 내보냅니다. 최근에 쓴 페이지는 곧 다시 쓸 가능성이 높다는 성질을 이용하므로, 실제 운영체제가 쓰는 방식 대부분이 LRU를 흉내 냅니다.

OPT는 앞으로 가장 늦게 다시 쓸 페이지를 내보냅니다. 폴트가 가장 적지만 운영체제가 미래의 요청을 알 수 없으므로 실제로는 구현할 수 없고, 다른 규칙을 평가하는 기준으로만 씁니다.

벨라디의 이상 현상

보통은 메모리 칸을 늘리면 폴트가 줄어듭니다. 그런데 FIFO에서는 칸을 늘렸는데 폴트가 오히려 늘어나는 경우가 있습니다. [벨라디 예시 불러오기]를 누른 뒤 메모리 칸을 3에서 4로 바꿔 보세요. 폴트가 9회에서 10회로 늘어납니다. LRU와 OPT에서는 이런 일이 생기지 않습니다.