기존에는 프로세스가 실행되는 코드 전체를 메모리에 로드해야했다. 그래서 메모리 용량보다 더 큰 프로그램을 실행시킬 수 없었다. ex ) 100MB의 메모리 환경에서, 200MB 크기의 프로세스를 수행할 수 있도록 가상 메모리를 사용한다. 프로그램에서 실질적으로는 사용되는 부분은 일부이고, 혹은 프로세스의 특정 순간에서 메모리를 사용하기에, 기존의 방식은 비효율적이었다. 따라서 가상 메모리가 필요하다. 물리 주소와 논리 주소 CPU는 실행하고자 하는 프로그램이 메모리의 어디에 있는지 알 수 없다. 메모리에 저장된 값은 시시각각 변하기 때문이다. 새롭게 실행되는 프로그램은 새롭게 메모리에 적재한다. 실행이 끝난 프로그램은 메모리에서 삭제한다. 같은 프로그램을 실행하더라도, 실행할 때마다 적재되는 주소는 달라..