-
Notifications
You must be signed in to change notification settings - Fork 0
Description
Minor Page Fault (Soft Page Fault)
정의
요청한 페이지가 물리 메모리에 있긴 하지만, 현재 해당 프로세스의 페이지 테이블에 매핑되지 않은 경우 발생합니다.
보통 다른 프로세스의 공유 메모리 영역에서 가져올 수 있는 경우입니다.
예시
두 개의 프로세스 A와 B가 같은 공유 라이브러리를 사용하고 있다고 가정하자.
B가 먼저 이 라이브러리를 사용하여 페이지가 이미 메모리에 올라와 있는 상황이다.
이후 A가 같은 페이지를 요청하면 A의 페이지 테이블에는 매핑이 안 돼 있으므로 minor page fault가 발생한다.
OS는 해당 페이지를 A의 페이지 테이블에 추가만 해주면 된다. 디스크 접근은 필요 없다.
Major Page Fault (Hard Page Fault)
정의
요청한 페이지가 물리 메모리와 스왑 영역(디스크)에도 없을 경우, 즉 디스크로부터 데이터를 가져와야 하는 상황에서 발생합니다.
예시
어떤 프로레스가 오랫동안 실행되지 않아, 그 프로세스의 페이지들이 메모리 부족으로 디스크(스왑 영역)로 옮겨졌다.
다시 해당 프로세스가 실행되면 요청하는 페이지는 메모리에 없고 디스크에만 있으므로, major page fault가 발생한다.
이 경우 OS는 디스크에서 데이터를 읽어와야 하므로 매우 느리다.
Invalid Page Fault
정의
프로세스가 존재하지 않거나 접근 권한이 없는 잘못된 페이지를 요청했을 때 발생하는 오류.
이는 일반적으로 segmentation fault or access violation으로 이어진다.
예시
프로세스가 null 포인터(주소 0x0)를 참조하거나, 할당받지 않은 주소 공간을 읽으려는 경우.
예를 들어, 배열의 인덱스를 잘못 계산해서 완전히 엉뚱한 메모리 영역을 참조할 때 발생.
| 종류 | 메모리에 있음 | 디스크 접근 | 처리 비용 | 예시 |
|---|---|---|---|---|
| Minor Page Fault | ✅ 있음 | ❌ 없음 | 💨 빠름 | 공유 라이브러리 접근 |
| Major Page Fault | ❌ 없음 | ✅ 필요함 | 🐢 느림 | 스왑 영역에서 불러오기 |
| Invalid Page Fault | ❌ 없음 | ❌ 없음 | ❌ 프로세스 종료 | 잘못된 주소 접근 |