요구 페이징과 폴트

요구 페이징 동작

요구 페이징은 프로세스의 모든 페이지를 미리 올리지 않고, 실제 접근이 발생한 페이지를 page fault를 계기로 메모리에 적재합니다. 메모리 사용은 줄지만 fault 처리 비용과 교체 정책이 중요해집니다.

01

접근을 시도한다

CPU가 주소를 만들고 페이지 테이블 valid bit가 꺼져 있으면 page fault가 발생합니다.

fault
02

OS가 위치 탐색

커널은 해당 페이지가 스왑 영역이나 파일 어디에 있는지 확인합니다.

locate
03

프레임을 확보한다

빈 프레임이 없으면 교체 알고리즘으로 희생 페이지를 골라 필요하면 디스크에 씁니다.

replace
04

명령을 재시작한다

페이지 테이블을 갱신한 뒤 fault를 낸 명령을 다시 실행해 프로그램은 이어서 동작합니다.

restart
Minor fault
디스크 I/O 없이 매핑만 필요한 경우 이미 메모리에 있거나 zero-fill이 필요한 페이지일 수 있습니다.
cheap
Major fault
디스크에서 페이지를 읽어야 하는 경우 메모리 접근보다 훨씬 느려 성능에 큰 영향을 줍니다.
I/O
Thrashing
작업 집합보다 프레임이 부족해 fault가 폭증 CPU는 기다리고 디스크 I/O만 바빠지는 상태가 됩니다.
overload

첫 접근 · 교체 연결 · 작업 집합 점검

첫 접근 프로그램 시작 직후 fault가 많은 것이 항상 오류는 아닙니다.
교체 연결 빈 프레임이 없을 때 어떤 페이지를 내보낼지가 성능을 좌우합니다.
작업 집합 프로세스가 실제로 자주 쓰는 페이지 묶음이 메모리에 들어오는지 봅니다.