초창기 컴퓨터에서는 사용 가능한 RAM의 용량이, 가장 큰 실행 애플리케이션의 주소 공간보다 커야 했다. 그렇지 않을 경우 "메모리 부족" 오류에 의해 해당 애플리케이션을 실행할 수 없었다.
위와 같은 물리 메모리 크기의 한계를 극복하기 위해 나온 기술이다.
가상 메모리 기법은 애플리케이션을 실행하는 데 얼마나 많은 메모리가 필요한지에 집중하지 않고, 대신 애플리케이션을 실행하는 데 최소한 얼마만큼의 메모리가 필요한가에 집중하여 문제를 해결하고자 했다.
메모리 접근은 순차적이고 지역화되어 있기 때문에 가능하다.
그렇다면 이렇게 애플리케이션의 일부분만 메모리(기억장치)에 올려진다면, 메모리에 올라가지 않는 나머지는 어디에 위치해야 할까?
보조 기억장치, 디스크 에 적재한다.
가상 메모리의 핵심은 보조 기억장치다.
페이징 기법: 컴퓨터가 메인 메모리에서 사용하기 위해 2차 기억 장치(보조 기억 장치)로부터 데이터를 저장하고 검색하는 메모리 관리 기법이다.
CPU가 해당 페이지를 요구할 때까지 그 페이지를 메모리에 올리지 않는 방식
(즉, 한번도 접근되지 않는 페이지는 물리 메모리에 전혀 적재되지 않는다)
페이지 부재(page fault)가 발생하면 그 때 트랩을 걸어 해당 페이지를 적재
[페이지 부재를 처리하는 과정]
1) 특정 페이지를 실행하기 위해 페이지 테이블을 참조하여 메모리가 올라와있는지 여부를 확인 (valid-invalid bit 확인)
2) 페이지가 메모리에 올라와 있지 않은 경우 (page fault, invalid인 경우) MMU가 인터럽트를 발생
3, 4) 운영체제는 해당 프로세스를 wait 상태로 만들고 요구된 페이지를 하드디스크에서 찾아 메모리의 자유프레임(free frame)(빈공간)에 적재
5) 페이지 테이블 갱신 (i → v)
6) 트랩에 의해 중단되었던 명령을 다시 수행: wait상태인 해당 프로세스를 다시 ready → running 하여 작업 재진행
가상 메모리를 만드는 방법은 대표적으로 두 가지(요구 페이징, 요구 세그먼트)가 존재하지만, 대부분 요구 페이징을 사용하므로 가상 메모리와 요구 페이징을 같은 용어로 사용하는 경우가 많다.