Swap Disk
Anonymous Page를 구현하기 위한 필수 개념 Swap Disk에 대해 알아보자
스왑 디스크(Swap Disk)의 기본 개념
| 개념 | 설명 |
|---|---|
| 목적 | 물리 메모리(RAM)가 부족할 때, 사용하지 않는 페이지(4KB 단위)를 SSD/HDD같은 보조 저장장치에 임시로 저장해 두는 공간 |
| 형태 | ① 스왑 파티션 (독립된 블록 디바이스) ② 스왑 파일 (일반 파일시스템 위 파일) |
| 구분 | 페이지가 RAM에 있으면 present 상태, 스왑으로 나가면 swapped 상태(PTE의 present 비트 = 0), 나머지 비트로 스왑 슬롯 번호 등 메타데이터 저장 |
| 근거 | 가상메모리 구현에서 페이지 부재(page fault)시 디스크 I/O(DMA)로 교체 |
동작 흐름
Page Fault
- CPU가 PTE의 present 비트를 확인 → 0이면 트랩 → 커널의 page-fault 핸들러 진입
물리 프레임 할당 실패
- 모든 프레임이 사용 중이면 페이지 교체(page replacement) 정책(LRU/Clock 등)으로 희생 페이지 선정
swap-out
스왑 비트맵(bitmap)에서 빈 슬롯 검색
페이지 내용을 8 섹터(512B x 8 = 4KB)단위로
block_write()PTE present = 0, swapped flag · 슬롯 번호 기록
swap-in(해당 가상주소 재접근 시)
새 프레임 확보 후
block_read()로 8섹터 읽음PTE present = 1, 스왑 메타데이터 초기화, TLB flush
비트맵 슬롯 free
I/O 세부
- 실제 전송은 디스크 컨트롤러가 DMA로 처리 → 완료 시 인터럽트 발생 → 커널이 잠들어 있던 프로세스 깨움