**가상 메모리(virtual memory)**는 실제로 물리 RAM이 얼마나 있든, 데이터가 실제로 어디에 놓여 있든 상관없이 모든 프로세스에게 자신만의 사적이고 연속적인 메모리 주소 블록(0부터 큰 최댓값까지)을 가진 듯한 착각을 준다. OS와 CPU의 **MMU(Memory Management Unit)**가 이 **가상 주소(virtual address)**를 실행 중에 **물리 주소(physical address)**로 변환한다.
착각이 작동하는 방식
메모리는 고정 크기의 page(흔히 4 KB)로 나뉜다. 프로세스마다 존재하는 page table이 각 가상 page를 물리 frame에 매핑한다:
text
Virtual address space Page table Physical RAM
(per process) (shared)
┌──────────┐ page 0 ─────────▶ frame 5 ───────────▶ ┌────────┐ frame 5
│ page 0 │ │ │
│ page 1 │ page 1 ─────────▶ frame 2 ───────────▶ ├────────┤ frame 2
│ page 2 │ page 2 ─────────▶ (on disk) swap-in ──▶ │ │
│ ... │ └────────┘
└──────────┘
