가상 메모리
위키백과 ― 우리 모두의 백과사전.
가상 메모리는 메모리를 관리하는 방법의 하나로, 각 프로그램에 실제 메모리 주소가 아닌 가상의 메모리 주소를 주는 방식을 말한다.
이러한 방식은 멀티태스킹 운영체제에서 흔히 사용되며, 실제 주기억장치보다 큰 메모리 영역을 제공하는 방법으로도 사용된다.
가상적으로 주어진 주소를 가상 주소 (virtual address) 또는 논리 주소 (logical address) 라고 하며, 실제 메모리 상에서 유효한 주소를 물리 주소 (physical address) 또는 실주소 (real address)라고 한다. 가상 주소의 범위를 가상 주소 공간, 물리 주소의 범위를 물리 주소 공간이라고 한다.
가상 주소 공간은 동적 어드레스 변환기(DAT : Dynamic Address Translation)라고 하는 하드웨어에 의해서 물리 주소로 변환된다. 실제로 이것을 실시하는 LSI는 MMU(memory management unit, 메모리 관리 유닛)으로 불리며 이 일에 의해서 프로그래머는 가상 주소 공간상에서 프로그램을 짜게 되어 프로그램이나 데이터가 주메모리상에 어떻게 존재하는지를 의식할 필요가 없어진다.
최근의 OS는 이 기능을 제공하지만, Adobe사의 일부 어플리케이션과 같이 응용 프로그램이 스스로 가상 메모리를 관리하는 것도 가능하다. 또, 하드웨어의 보조가 없어도 가상메모리를 사용하는 것은 가능하지만 지극히 관리가 복잡하고, 실용적이지 않기 때문에, DAT를 갖고 있는 MMU를 가지지 않는 계산기에서의 사용은 현재 존재하지 않는다.
가상메모리 개념은 1957년에 발표되었다. 실제 적용된 것은 맨체스터 대학이 Atlas용으로 1961년에 개발한 것이 최초이다. 1965년에 MIT가 개발한 MULTICS 시스템이후 본격적으로 채용되기 시작했다.
가상메모리는 크게 나누어 세그먼트(segment) 방식과 페이징 방식의 2종류가 있다. 예를들어 MC68000시스템에서는 68451(세그먼트(segment) 방식)과 68851(페이징 방식) 두가지의 MMU가 준비되어 있었다.