가상 메모리(Virtual Memory)

By 01/11/2018OS Concept

가상 메모리(Virtual Memory)

 

가상 메모리(Virtual Memory)는 프로세스 전체가 메모리에 올라와 있지 않아도 실행이 가능하도록 하는 기법이다. 주요 장점중의 하나는 프로그램이 물리 메모리보다 커도 된다는 것이다. 가상 메모리는 물리 메모리로부터 사용자 관점의 논리 메모리를 분리시켜 주 메모리를 균일한 크기의 저장공간으로 구성된 큰 배열로 추상화 시켜 준다. 또한 파일 공유를 쉽게 해주고 공유 메모리 구현을 가능하게 한다. 단점으로는 구현이 어렵고 잘못 사용하게 된다면 성능이 현저히 저하될 수 있다.

 

한 프로세스의 가상 주고 공간은 그 프로세스가 메모리에 저장되는 논리적인(또는 가상적인) 모습(View)을 말한다. 일반적으로 특정 논리 주소에서(보통 0번지)시작하여 연속적인 공간을 차지 한다. 물리 메모리는 페이지 프레임들로 구성되며 프로세스에 할당된 페이지 프레임들이 실제적으로 연속적인 것들이 아닐 수 있다. 물리적인 페이지 프레임을 논리적인 페이지로 매핑하는 것은 메모리 관리 장치(Memory Management Unit)에서 담당한다.

 

힙(heap)은 동적 할당 메모리를 사용함에 따라 주소 공간 상에서 위 쪽으로 확장된다. 스택은 함수 호출을 거듭함에 따라 주소 공간 아래 쪽으로 확장 된다. 힙과 스택사이의 공백도 가상 주소 공간의 일부이지만 힙 또는 스택이 확장되어야만 실제 물리 페이지를 요구하게 된다.

 

공백을 포함하는 가상 주소 공간을 Sparse 주소 공간이라고 한다. Sparse 주소 공간의 공백은 스택이나 힙 세그먼트가 확장될 때 사용되거나 프로그램 실행 중 동적으로 라이브러리를 링크할 필요가 있을 때 사용한다.

 

논리 메모리를 물리 메모리로 분리시켜 주는 것 외에 가상 메모리는 페이지 공유를 통해 파일이나 메모리가 둘 또는 그 이상의 프로세스들에 의해 공유되는 것을 가능하게 한다.

 

[참고자료]

Operating System Concepts / 홍릉과학출판사

 

operationsystem, 운영체제, 운영체제구조, 컴퓨터구조, OSConcept, 가상메모리, 힙, 스택, virtualmemory, virtualmemorymanagermemorymanagementunit, sqlmvp, SQL Angeles

 

Leave a Reply

%d bloggers like this: