운영체제

요구 페이징과 페이지 폴트

가상 메모리의 핵심 아이디어는, 프로세스의 모든 페이지를 미리 메모리에 올리지 않아도 된다는 것입니다. 실제로 필요한 페이지만 메모리에 올리면 됩니다.

왜 모든 페이지를 올리지 않는가와 지역성이 동작하는 이유를 중심으로 요구 페이징과 페이지 폴트의 판단 흐름을 읽습니다.

핵심 흐름

1

요구 페이징의 원리

왜 모든 페이지를 올리지 않는가 프로세스의 코드와 데이터를 전부 메모리에 올리면: 실행 시작이 느려집니다 (수 MB~수 GB를 디스크에서 읽어야 함).

2

페이지 폴트 처리 과정

CPU가 유효 비트 0인 페이지에 접근하면 페이지 폴트(Page Fault) 트랩이 발생합니다.

3

Copy-on-Write

fork() 시스템 콜로 자식 프로세스를 만들면, 부모의 전체 주소 공간을 복사해야 합니다.

4

빈 프레임이 없다면 — 페이지 교체의 필요성

물리 메모리가 가득 차서 빈 프레임이 없는 상태에서 페이지 폴트가 발생하면, 기존에 메모리에 있던 페이지 중 하나를 내보내야(Evict) 합니다.