프로그램 실행을 위해서는 메인 메모리에 적재해야 한다. 하지만 모든 프로그램을 메인 메모리에 올리는 것은 비효율적이다.
→ 프로그램 일부만 메인 메모리에 실행 하는 방법이 필요하다.
프로그램 일부만 메모리에 올려놓고 실행하면 얻을 수 있는 장점은 무엇일까?
1 ) 프로그램이 물리 메모리 크기 제약에 벗어남으로써, 사용자들은 매우 큰 가상 주소 공간을 가정하고 프로그램을 만들 수 있다.
2 ) 더 많은 프로그램을 동시에 수행할 수 있다. (더 작은 메모리를 차지하기 때문에)
3 ) I/O회수가 줄어들기 때문에 프로그램이 빨리 실행된다.
[가상 메모리]
가상의 메모리 주소가 각 프로그램의 실제 메모리 주소로 연결되도록 하는 방식으로 실제의 물리 메모리와 논리 메모리가 분리되어있다.
→ 작은 메모리를 가지고도 얼마든지 큰 가상 주소 공간을 프로그래머에게 제공할 수 있다.
가상 메모리의 주소는 메모리 맵과 맵핑되어 실제 메모리 주소로 연결된다.
[가상 공간]
프로세스가 메모리에 저장되는 논리적인 모습으로 주로 요구 페이징 기법으로 구현한다.
메모리 내에서 가상 주소 공간은 왼쪽 그림과 같이 구성되어 있으며 파란색 부분을 성긴(sparse)주소라고 한다.