Zzong's Notes

Home

❯

OS

❯

Page Fault

Page Fault

2026년 8월 29일1 min read

  • Process 가 Page 를 요청했을 때, 그 Page 가 Memory 에 없는 상황
    • Process 의 부재에서 오류가 발생했을 뿐, Process 가 만든 오류는 아니다.
  • Page Fault 가 발생하면, Process 가 해당 Page 를 사용할 수 있도록 swap 영역 에서 물리 Memory 로 옮겨야 한다 (swap in).
    • 만약 Memory 가 꽉 찼다면 메모리에 있는 Page 를 swap 영역 으로 내보내야 한다 (swap out).
    • 이때, 어떤 Page 를 보낼지 선정하는 알고리즘이 페이지 교체 알고리즘 이다.

링크된 언급

3
First In First Out

...age 를 내보낸다. 구현이 단순하고 적재 시각만 기록하면 되지만, 오래 있었다는 것과 앞으로 안 쓰인다는 것은 다른 이야기다. 자주 쓰이는 페이지도 오래됐다는 이유로 쫓겨나 곧바로 다시 Page Fault 가 나는 일이 생긴다. 그래서 실제로는 마지막 사용 시각을 보는 LRU 나 사용 빈도를 보는 LFU 를 더 쓴다. FIFO 에는 프레임 수를 늘렸는데 오히려 page fault 가 늘어나...

NUR

...것이 “한 번 봐준다” 는 뜻이라 second-chance 라고도 한다. 최근에 쓰인 페이지는 한 바퀴를 버티지만, 그 사이에 다시 안 쓰이면 다음 바퀴에서 교체된다. 정확한 LRU 보다 Page Fault 가 조금 더 나지만, 하드웨어가 비트 하나만 세워주면 되므로 실제 운영체제가 이 계열을 쓴다.

페이지 교체 알고리즘

Memory 에서 앞으로 사용할 가능성이 적은 페이지를 대상 Page 로 선정하여 Page Fault 를 줄이고, 시스템의 성능을 향상한다.

함께 보면 좋은 글

Page

Linux 는 I/O 성능을 높이기 위해서 Page Cache 를 사용한다.

swap in

swap 영역 에서 물리 Memory 로 데이터 (Page) 를 가져오는 것 .

swap out

물리 Memory 에서 swap 영역 으로 데이터를 내보내는 것 .

swap 영역

하드디스크에 존재하고 Memory Management Unit 가 관리하는 영역 swap in swap out .

NUR

Not Used Recently. 페이지 교체 알고리즘 의 하나로, 최근에 쓰이지 않은 Page 를 골라 내보낸다. LRU 와 목적은 같지만, 마지막 사용 시각을 정확히 기록하는 대신 비트 두 개로 대충 근사한다.

Memory

메모리의 구성 요소 4 개 Code 실행할 프로그램의 코드가 저장되는 영역 (컴파일 시 크기가 결정됨) Data 전역 변수, static variable 등 컴파일 시 결정되는 것들에 대한 영역 stack 지역 변수, parameters, return value 등 임시로 사용하는 값들에 대한 영역 (컴파일 시...

페이지 교체 알고리즘

swap out 을 위한 Page 를 선정하기 위한 알고리즘 Memory 에서 앞으로 사용할 가능성이 적은 페이지를 대상 Page 로 선정하여 Page Fault 를 줄이고, 시스템의 성능을 향상한다.

Process

Process 란 OS 로 부터 시스템 자원을 할당받고 메모리에 적재되어 실행되고 있는 프로그램 (program) 의 인스턴스를 의미하며, 여기서 프로그램은 실행 가능한 파일을 뜻한다.

slab

cache 는 다수의 slab 의 집합으로 구성되고, 각 slab 은 Slab Object 의 집합으로 구성된다. 각 Slab 은 Page Size 크기를 갖는다 (일반적으로 Page Size 는 4kb). Linux 의 커널은 자료구조로 Slab 을 사용한다.

dmesg

dmesg 명령어는 시스템 부팅 메시지를 확인하는 명령어다. 또한 커널에서 출력되는 메세지를 일정 수준 기록하는 버퍼 역할을 수행하며, 커널 부팅 중에 에러가 났다면 어느 단계에서 에러가 났는지 범위를 좁히고 찾아내는데 도움이 된다.