개요

가상 메모리란 용어 그대로 메모리를 가상화하는 방법이다. 가상 메모리가 등장한 가장 큰 배경은 물리 메모리Physical Memory가 너무 작았기 때문이었으므로, 마치 메모리가 더 많은 것처럼 보여주려고 사용했다. CPU가 내보내는 메모리 주소, 즉 운영체제나 애플리케이션이 사용하는 주소는 실제 메모리의 물리 주소Physical Address가 아닌 가상 주소Virtual Address다. 따라서 가상 메모리를 구현하려는 CPU 제조 업체는 저마다 하드웨어 관점에서 가상 주소를 물리 주소로 변환하는 MMUMemory Management Unit라는 것을 제공한다.

가상 주소와 물리 주소와의 매핑을 결정하는 것은 페이지 테이블Page Table이다. 운영체제는 가상 주소와 물리 주소 사이의 매핑 정보를 페이지 테이블에 기록한다. 그런 다음 CPU의 페이지 테이블 베이스 레지스터Page Table Base Register가 페이지 테이블에 기록한 메모리 주소를 등록하면, MMU는 페이지 테이블을 검색해 CPU가 내보내는 가상 주소의 실제 물리 주소를 찾아내 변환하고, 변환한 주소를 통해 메모리에 접근한다. 즉, 페이지 테이블은 가상 주소와 물리 주소 사이의 변환 테이블이다.

MMU는 이러한 변환 과정을 담당하는 하드웨어적인 처리 장치이다. MMU는 하드웨어 적으로 구현되어, 매우 빠른 메모리 장치에 대한 Access를 가능하게 해준다. 또한 가상 주소를 실제 주소로 변환하는 과정이 하나의 clock에 일어 날 수 있도록 도와준다. 그러나 MMU에서 처리되는 메모리의 위치나 메모리에 대한 정보는 소프트웨어적으로 구현된다. 이는 Paging이라는 기법으로 구현되게 된다.

이러한 MMU는 추가적으로 Copy on write, zero copy, Demand paging과 같은 기법들이 구현 될 수 있게 할 수 있다.