Virtual Memory

사용자가 프로그램을 실행하면 OS는 디스크에 저장된 데이터를 메모리로 로드한다. 하지만 메모리 공간은 한정되어 있고, 사용자는 동시에 많은 프로그램을 실행하고 싶어 한다. 이런 메모리 공간의 한계를 극복하기 위해 가상 메모리라는 개념이 등장했다.
csMemoryVirtual***
avatar
2025.05.14
·
4 min read

가상 메모리

사용자가 프로그램을 실행하면 OS는 디스크에 저장된 데이터를 메모리로 로드한다. 하지만 메모리 공간은 한정되어 있고, 사용자는 동시에 많은 프로그램을 실행하고 싶어 한다. 이런 메모리 공간의 한계를 극복하기 위해 가상 메모리라는 개념이 등장했다.

6068

가상 메모리란

가상 메모리(virtual memory)는 프로세스의 일부만 메모리에 로드하고, 나머지는 디스크에 둔 상태로 프로세스를 실행하는 방식이다. 이 방식은 프로세스 전체가 메모리에 올라오지 않아도 프로세스를 실행하는 데 문제가 없다는 점에서 나왔다. 사용자에게는 프로세스 전체가 메모리에 로드된 것처럼 보이지만, 실제로는 전체가 로드된 것이 아니어서 가상 메모리라고 한다.

6066

위 그림과 같이 메모리에 프로세스 일부를 로드하고, 프로세스의 나머지 영역은 디스크에 두면, 더 많은 프로세스를 메모리에 로드할 수 있다.

가상 메모리를 사용하면 다음과 같은 장점이 있으니 참고할 것.

  • 프로그램이 메모리 크기에 대한 제약을 덜 받을 수 있다.

  • 동시에 많은 프로그램을 실행하므로 CPU 이용률과 처리율을 높일 수 있다.

  • 필요한 영역만 메모리에 로드해 스와핑 횟수를 줄여서 프로그램 실행 속도를 높일 수 있다.

가상 메모리를 구현하는 방법 - 요구 페이징

요구 페이징은 가상 메모리 시스템에서 프로그램 실행에 필요한 페이지만 실제 메모리로 가져오는 기법이다. 프로세스가 특정 페이지를 참조할 때만 해당 페이지를 메모리에 로드하므로, 실제로 사용되는 코드와 데이터만 물리 메모리에 존재하게 된다.

이 방식은 페이지 폴트(Page Fault) 발생 시 필요한 페이지를 디스크에서 메모리로 가져오는 과정을 통해 구현되며, 메모리 사용 효율성을 높이고 프로세스가 실행되기 위해 필요한 초기 로딩 시간을 단축시킨다. 또한 여러 프로세스가 제한된 물리 메모리를 효율적으로 공유할 수 있게 한다.







- 컬렉션 아티클