티스토리 뷰
컴퓨터마다 실제 사용 가능한 메모리 크기가 다 다르다. RAM 크기도 다를 것이고, HDD/SDD의 SWAP 영역으로 할당된 메모리 크기도 다 다를 것이다. 이러한 메모리를 다룰때 범용 OS 나오기전에는 SW 개발시 이러한 물리 메모리를 직접적으로 핸들링을 하였다. 그래서 개발되는 SW 가 제품자체에 대한 메모리 의존성이 높았다. 그러나 범용 OS가 나타나고 메모리 자체에 대한 추상화가 가능해지다보니. 가상 메모리라는 개념이 나타났다.
가상 메모리가 나오고나서부터 앞에서 언급한 메모리 의존성이 사라졌고, 특히나 관리적 측면(보안)에서 매우 높은 효과를 보였다.
가상 메모리 체계에서 먼저 따져야할 것은 관리의 최소 단위인 메모리 1바이트 이며, 해당 1바이트에 접근하기 위해 과거에는 32bit 주소 체계로 메모리에 접근하였다. 즉, 1바이트당 각각 32비트 단위의 메모리 주소값이 있는 것이다. 물론 현재는 64bit 운영체제 환경이기에 64비트 단위의 메모리 주소 체계가 형성되어 있다. 총 가짓수는 2^64 - 1 이다.

현재 이론 설명에서는 32bit 단위로 다룰려고 한다. 왜냐하면 64비트 체제로 설명하려면 그 전에 설명해야할 것들이나 예외적인 것들이 너무 많기때문이다. 일단, 특정 응용 SW가 32bit 주소 체계를 다룬다고 한다면, 해당 소프트웨어에게 할당되는 VMS(Virtual Memory Space) 최대 크기는 4GB 일것이다. 2(bit)^32-1 는 대략 4GB에 해당하기 때문이다.
이를 절반으로 나누어 2GB는 USER 단에 나머지 2GB는 커널단에 배분한다. 그리고 2GB 중 약 200MB 정도는 OS 에게 할당한다. 그러면 대략 1.7~1.8GB 정도만 해당 응용 SW가 사용하는 것이다.
