1 분 소요

가상 메모리(virtual memory)

가상 메모리는 한정된 물리적인 메모리 용량을 보완하여, 더 많은 프로그램을 동시에 실행할 수 있게 해주는 기술이다. 프로그램의 일부만 물리적인 메모리에 올려놓고, 필요한 부분은 보조기억장치에서 불러와서 실행함으로써, 프로그램의 크기와 상관없이 실행 가능하다.

  • 즉, 프로세스 전체가 메모리 내에 올라오지 않더라도 실행이 가능하도록 하는 기법이다.
  • 또한 프로그램이 물리 메모리보다 커도 된다는 주요 장점이 있다.

가상 메모리 개발 배경

주된 이유는 물리적 메모리 크기의 한계와 최적화의 문제였다.

  • 실행되는 코드 전체가 물리 메모리에 존재시켜야 했으며, 메모리 용량보다 큰 프로그램은 실행시킬 수 없었기 때문이다.
  • 여러 프로그램을 메모리에 올리기에는 용량의 한계, 페이지 교체 등의 성능 이슈가 발생된다.
  • 자주 사용되지 않는 코드 또한 메모리를 차지한다는 점이다.

만약 프로그램의 일부분, 필요한 부분만 메모리에 올릴 수 있다면

  • 물리 메모리 크기에 제약을 받지 않게 된다.
  • 더 많은 프로그램을 동시에 실행할 수 있게 된다.
    • 응답시간은 유지되고, CPU이용률과 처리율이 높아져 효율성이 높아진다.
  • swap 에 필요한 입출력이 줄어들면서, 프로그램들이 빠르게 실행된다.
    • swap: 가상 메모리의 중요 구성 요소 중 하나이며, 시스템의 성능을 높이는 역할

가상 메모리가 하는 일

가상 메모리는 물리 메모리 개념과 사용자의 논리 메모리 개념을 분리한 것으로 볼 수 있다.

이로인해서, 작은 메모리를 가지고도 원하는 만큼의 큰 가상 주소 공간 을 프로그래머에게 제공할 수 있다.

가상 주소 공간

  • 한 프로세스가 메모리에 저장되는 논리적인 모습을 가상메모리에 구현한 공간이다.
    • 불필요한 메모리 공간은 물리적 메모리에 올리지 않아, 공간을 절약할 수 있다.
    • 필요한 프로그램만 메모리에 올려 실행시키며, 불필요하게 공간을 낭비하지 않는다.

프로그램 실행 시

즉, 가상 메모리를 이용한 상태로 프로그램이 실행되면, 물리적인 메모리 용량 이상의 데이터와 코드를 처리할 수 있게된다. 또한, 프로그램이 필요로 하는 데이터와 코드를 물리적인 메모리에 적재하지 않기 때문에, 여러 프로그램이 동시에 실행될 때도 더욱 효율적인 메모리 관리가 가능하다.

업데이트: