<aside>
🥕
페이지 폴트(인터럽트)
CPU가 접근하려는 가상 메모리 페이지가 현재 물리 메모리(RAM)에 존재하지 않아서 발생하는 오류. 해당 오류가 발생하면 OS가 해당 페이지를 보조기억장치(디스크)에서 찾아 메모리로 옮기는(적재하는) 작업 수행
</aside>
1️⃣ 페이지 폴트 발생
- 프로세스가 가상 주소를 통해 메모리에 접근 시도 → CPU가 MMU에게 주소 변환을 요청
- MMU(메모리 관리 장치)가 가상 주소의 페이지 번호를 가지고 페이지 테이블 참조
- 해당 페이지에 해당하는 PTE(페이지 테이블 엔트리) 항목 중, 유효 비트(valid bit)가 0이면 MMU는 해당 페이지가 물리 메모리(RAM)에 없음을 감지하고 페이티 폴트라는 인터럽트 발생시킴
2️⃣ 운영체제 개입
- 페이지 폴트 인터럽트가 발생하면 CPU는 현재 실행 중인 프로세스의 제어를 중단하고 운영체제(커널)로 제어권을 넘김
- 운영체제는 인터럽트를 처리하기 위해 페이지 폴트 핸들러를 실행시킴
- Q) 페이지 폴트 핸들러란?
- Q) 페이지 폴트 처리 핸들러 과정의 상세 설명(예시와 함께)
3️⃣ 디스크 접근 및 페이지 로드
- 운영체제가 페이지 테이블을 확인해 해당 페이지가 디스크(보조기억장치)의 어느 위치에 저장되어 있는지 파악 → 디스크 컨트롤러에게 “디스크에서 해당 페이지를 읽어와 물리 메모리의 빈 공간에 저장하라”는 명령을 내림
- DMA(Direct Memory Access)를 통해 디스크 컨트롤러가 CPU 개입 없이 디스크로부터 해당하는 페이지를 읽어와 메모리에 페이지를 적재
- Q) 디스크에서 페이지를 DMA를 통해 메모리에 적재한다?
- Q) DMA가 끝나면 디스크 컨트롤러가 인터럽트를 발생시켜 운영체제에게 알리는게 맞는가?
4️⃣ 페이지 테이블 갱신 및 재실행
- 페이지가 메모리에 성공적으로 적재되면, 운영체제가 해당 페이지에 위치한 물리 프레임 번호를 페이지 테이블에 기록하고 유효 비트를 1로 변경
- 페이지 폴트를 유발했던 CPU 명령어를 다시 실행해 프로세스가 정상적으로 작업을 계속하도록 이어나감