물리 메모리는 컴퓨터 시스템에서 실제로 존재하는 메모리이다. 이는 램(RAM)이라고도 불리며, CPU가 직접 접근할 수 있는 메모리 공간을 의미한다. 물리 메모리는 컴퓨터의 모든 작업을 수행하는 데 필수적인 요소로, 프로그램이 실행될 때 필요한 데이터와 명령어를 저장하고 이를 CPU가 빠르게 접근할 수 있도록 한다. 물리 메모리의 용량이 클수록 더 많은 프로그램을 동시에 실행할 수 있으며, 시스템의 성능 또한 향상된다.
반면, 가상 메모리는 물리 메모리의 한계를 극복하기 위해 사용되는 개념이다. 이는 운영체제가 제공하는 기능으로, 실제 물리 메모리보다 더 큰 메모리 공간을 사용하는 것처럼 보이게 한다. 가상 메모리는 물리 메모리와 디스크 저장 공간의 조합으로 구성되며, 프로그램이 필요로 하는 메모리 공간을 운영체제가 적절히 관리하여 제공한다. 가상 메모리는 메모리 부족 문제를 해결하고 프로그램이 중단 없이 실행될 수 있도록 도와준다.
가상 메모리는 페이징(paging)과 스와핑(swapping)이라는 두 가지 주요 기법을 사용한다.
페이징은 프로그램의 메모리 요구를 작은 블록, 즉 페이지 단위로 나누어 관리하는 방식이다. 운영체제는 이러한 페이지들을 물리 메모리와 디스크 사이에서 필요에 따라 이동시킨다. 페이지 폴트(page fault)가 발생하면, 필요한 페이지가 현재 물리 메모리에 존재하지 않음을 의미하며, 이때 운영체제는 디스크에서 해당 페이지를 가져와 물리 메모리에 로드한다.
스와핑은 프로세스 전체를 물리 메모리에서 디스크로, 또는 디스크에서 물리 메모리로 옮기는 작업을 의미한다. 이는 주로 물리 메모리가 매우 부족할 때 사용되며, 프로세스의 실행 속도를 느리게 할 수 있다.
물리 메모리와 가상 메모리는 상호 보완적인 관계를 가진다. 물리 메모리는 높은 속도와 효율성을 제공하지만, 용량이 제한적이다. 반면, 가상 메모리는 이 제한을 완화하여 더 큰 메모리 공간을 제공하지만, 디스크 접근 속도는 물리 메모리에 비해 훨씬 느리다. 따라서, 운영체제는 이 두 가지 메모리 유형을 효율적으로 관리하여 시스템의 전반적인 성능을 최적화해야 한다.