가상 메모리란

핵심 아이디어

각 프로세스에게 **“나만 메모리 전체를 쓰고 있다”**는 생각이 들게 함.

실제로 물리 RAM이 8GB여도, 64비트 시스템에서 프로세스 하나당 이론상 128TB 주소 공간을 받음 전부 실제 매핑되는 건 아니고, 접근하는 시점에 물리 메모리에 매핑(demand paging)

왜 필요한가

프로세스 간 메모리 격리가 핵심

프로세스 A가 주소 0x1000에 쓴다고 프로세스 B의 0x1000이 오염되지 않음 각자의 페이지 테이블이 다른 물리 프레임을 가리키기 때문

인프라 관점

top이나 ps에서 보이는 VIRT(VSZ)가 가상 메모리 크기, RES(RSS)가 실제 물리 메모리 사용량

Java 프로세스가 VIRT 10GB 찍어도 RSS가 2GB면 실제 물리 메모리는 2GB만 사용하는 것

메모리 할당 과정

가상 메모리 주소 변환(Page Table Walk, TLB, THP)