Anonymous Page는 파일 시스템과 연결되지 않은 사용자 공간 페이지를 의미한다. 즉, 디스크에 매핑된 backing file이 없는 메모리 페이지로, 사용자의 동적 메모리 할당(malloc, brk, mmap with MAP_ANONYMOUS) 등에 의해 생성된다.
이 페이지는 초기 내용이 0으로 채워진다(= demand-zero) 는 특징이 있으며, 파일로부터 로드된 페이지와는 달리 스왑 공간에만 백업된다.
malloc, sbrk)mmap with MAP_ANONYMOUSshm_open, mmap)| 항목 | 내용 |
|---|---|
| 초기값 | Demand-zero: 최초 접근 시 0으로 채워짐 |
| 백업 위치 | 스왑 공간 (swap disk) |
| 파일 매핑 | 없음 |
| 예시 | malloc, stack, MAP_ANONYMOUS |
| 파일 재로딩 | 불가능 (파일이 없으므로) |
| Dirty 관리 | 수정 여부와 무관하게 교체 시 swap-out |
| 항목 | Anonymous Page | File-backed Page |
|---|---|---|
| 초기 로딩 | 0으로 초기화 | 파일에서 로딩 |
| 백업 저장소 | Swap (스왑 공간) | 원본 파일 + Swap |
| 재로딩 | 불가능 | 파일에서 재로딩 가능 |
| 예시 | malloc, stack 등 | mmap("file.txt") |
Pintos Project 3 이상에서는 vm_entry 또는 page 구조체에서 anonymous page와 file-backed page를 구분하여 처리한다.
enum vm_type {
VM_ANON, // Anonymous page
VM_FILE, // File-backed page
...
};
struct page {
enum vm_type type;
struct frame *frame;
...
};
malloc → anonymous page 생성 → vm_alloc_page(VM_ANON)malloc, stack, MAP_ANONYMOUS 등의 사용 시 생성된다.