가상메모리 개념도를 그려 봤습니다
흔히 가상메모리를,
메모리로 사용되는 하드디스크 일부라고 생각하는데, 사실은 조금 다르죠
하드디스크 일부는 윈도우에서는 페이지피일(page file) 이라고 부릅니다(다른 os에서는 스왑(swap)파일)
가상메모리는 OS가 메모리를 관리하는 메커니즘 혹은 기법을 말합니다
(가상 주소 메커니즘 이라는 말이 더 와닿겠네요)
어쨋든, 가상메모리는 논리메모리라고도 할 수 있는데요,
실제 물리 메모리를 직접 핸들링하지 않고 각 프로세스 마다 논리 메모리(가상메모리)를 두어
MMU(Memory Management Unit)의 도움을 받아 논리(가상) 메모리 - 물리(실제) 메모리 매핑으로 이루어 집니다
32bit 시스템에서는 하나의 프로세스에 4G(0 ~ 2^32 -1) 만큼 주소공간 할당이 가능합니다
물론 하드디스크의 공간이 메모리처럼 사용되어야 하지요
빈번한 스왑(swap)은 성능에 좋지 않습니다
그렇기에 OS 에서는 스왑이 잘 일어 나지 않도록, 메모리를 블럭단위로 관리합니다
이는 캐쉬 메모리 알고리즘인 스페이셜 로컬리티(spatial locality) ,
즉 참조되는 주소 공간과 인접해 있는 공간이 자주 참조된다는 소프트웨어 특징이 적용된 셈입니다
