실제 각 프로세스마다 충분한 메모리를 할당하기에는 메모리 크기의 한계가 있다. 리눅스의 경우 하나의 프로세스 마다 4GB를 필요로 하나 통상 메모리는 8~16GB이다.
폰 노이만 구조이므로 코드는 메모리에 반드시 있어야 한다.
하나의 프로세스만 실행하는 배치 처리 시스템에서는 문제가 없었지만 여러 프로세스를 동시에 실행하는 시스템에서는 메모리 용량 부족 이슈가 있으며 프로세스 메모리 영역 간 침범 이슈가 있기 때문
결국 가상 메모리를 메모리가 실제 메모리보다 많아 보이는 것이며 실제 사용되는 메모리는 적다는 점에 착안 되었다. 프로세스 간 공간 분리로 프로세스 이슈가 전체 시스템에 영향을 주지 않을 수 있다.
프로세스는 가상 주소를 사용하고 실제 해당 주소에서 읽고 쓸 때만 물리 주소로 바꿔주면 된다.
이 작업을 Memory Management Unit에서 담당하며 가상주소값을 물리주소값으로 변환해주는 하드웨어 장치이다.
하드웨어 장치를 이용해야 주소 변환이 빠르기 때문에 별도 장치를 사용