<aside> 🥕

페이지 폴트(인터럽트)

CPU가 접근하려는 가상 메모리 페이지가 현재 물리 메모리(RAM)에 존재하지 않아서 발생하는 오류. 해당 오류가 발생하면 OS가 해당 페이지를 보조기억장치(디스크)에서 찾아 메모리로 옮기는(적재하는) 작업 수행

</aside>

1️⃣ 페이지 폴트 발생

  1. 프로세스가 가상 주소를 통해 메모리에 접근 시도 → CPU가 MMU에게 주소 변환을 요청
  2. MMU(메모리 관리 장치)가 가상 주소의 페이지 번호를 가지고 페이지 테이블 참조
  3. 해당 페이지에 해당하는 PTE(페이지 테이블 엔트리) 항목 중, 유효 비트(valid bit)가 0이면 MMU는 해당 페이지가 물리 메모리(RAM)에 없음을 감지하고 페이티 폴트라는 인터럽트 발생시킴

2️⃣ 운영체제 개입

  1. 페이지 폴트 인터럽트가 발생하면 CPU는 현재 실행 중인 프로세스의 제어를 중단하고 운영체제(커널)로 제어권을 넘김
  2. 운영체제는 인터럽트를 처리하기 위해 페이지 폴트 핸들러를 실행시킴

3️⃣ 디스크 접근 및 페이지 로드

  1. 운영체제가 페이지 테이블을 확인해 해당 페이지가 디스크(보조기억장치)의 어느 위치에 저장되어 있는지 파악 → 디스크 컨트롤러에게 “디스크에서 해당 페이지를 읽어와 물리 메모리의 빈 공간에 저장하라”는 명령을 내림
  2. DMA(Direct Memory Access)를 통해 디스크 컨트롤러가 CPU 개입 없이 디스크로부터 해당하는 페이지를 읽어와 메모리에 페이지를 적재

4️⃣ 페이지 테이블 갱신 및 재실행

  1. 페이지가 메모리에 성공적으로 적재되면, 운영체제가 해당 페이지에 위치한 물리 프레임 번호를 페이지 테이블에 기록하고 유효 비트를 1로 변경
  2. 페이지 폴트를 유발했던 CPU 명령어를 다시 실행해 프로세스가 정상적으로 작업을 계속하도록 이어나감