가상 메모리란 무엇인가요?

  • 가상 메모리(Virtual Memory) 는 프로세스가 메모리 외부에서 실행될 수 있도록 하는 매우 유용한 메모리 관리 기술이다.

  • 실제 메모리 크기와 상관없이 메모리를 이용할 수 있도록 가상의 메모리 주소를 사용하는 방법이다.

  • 가상 메모리는 물리 메모리보다 큰 프로세스나 여러 개의 작은 프로세스들을 동시에 실행 시켜, 사용자나 응용 프로그램의 무한대의 메모리가 있다고 느끼도록 하는 것이다.

  • 실행 프로그램이 실제 메모리에 맞지 않을 때 특히 사용된다.

가상 메모리의 주요 기능

  • 메모리 관리의 단순화

    • 각 프로세스마다 가상 메모리의 통일된 주소 공간을 배정할 수 있으므로 메모리 관리가 단순해진다.

  • 메모리 용량 및 안정성 보장

    • 한정된 공간의 RAM이 아닌 거의 무한한 가상 메모리 공간을 배정함으로써 프로세스들끼리 메모리 침범이 일어날 여지를 크게 줄인다.

가상 주소 공간

  • 가상 메모리와 가상(논리) 주소 공간(Virtual Address Space)은 다른 개념이다.

  • 가상 주소 공간은 각 프로세스 당 주어지는 논리적인 공간이다.

  • 가상 주소 공간의 크기는 물리 메모리(RAM)의 크기와는 독립적이며, 레지스터 크기에 종속적이다.

가상 주소 공간의 구조(프로세스 당)

img_9.png
  • Stack : 함수 실행 시 저장, 종료 시 반환

  • Unused Address Space : 필요할 경우(런타임 간 저장, 원할 때 반환)

  • Heap : 런타임 간 저장, 원할 때 반환

  • Data & BSS : 컴파일 시 저장, 프로그램 종료 시 반환

  • Instruction(Code or Text) : 컴파일 시 저장, 프로그램 종료 시 반환

가상 주소 공간 관리

  • 프로세스의 주소 공간은 페이지(page) 단위로 관리된다.

  • 가상 주소 공간의 주소를 논리 주소라고 하는데, 모든 논리 주소가 반드시 물리 메모리의 물리 주소로 할당받는 것은 아니다.

  • 가상 주소 공간의 페이지가 물리 주소에 할당되지 않는 경우

    • 필요할 때 물리 주소 할당 받는 경우

    • 접근 금지 페이지로 남겨둔 경우

    • 사용되지 않은(unused) 논리 주소인 경우

Process Life Cycle 중에 동시에 전체의 DataInstruction이 필요한 것이 아니기 때문에 필요할 때 물리 주소를 할당받고 반환하면 메모리를 효율적으로 사용할 수 있다.

img_10.png

참고

Last updated