가상 메모리(Virtual Memory)

OS/Theory 2016. 4. 17. 07:00

<가상 메모리(Virtual Memory)>

운영체제는 주어진 메모리의 크기 아래서 프로그램을 작은 조각으로 나누어 그 중에 일부분만을 메모리에 적재하되, 그것도 적재가 가능한 곳으로 비연속적으로 넣어줌으로써, 사용자는 메모리에 대한 고민으로부터 벗어 날 수 있다. 사실은 제한적인 크기지만 엄청나게 큰 메모리가 있는 것처럼 여겨지기 때문에 가상 메모리라고 부른다.


모든 프로그램은 작은 조각들로 나눠지게 되는데, 조각들의 크기를 모두 같도록 하면 한 조각을 페이지라고 부르고, 서로 다르게 하면 조각들 각각을 세그먼트라고 부른다.

페이지 or 세그먼트는 메모리와 디스크 사이에서 한 번에 전송되는 단위가 되는데 이 단위를 블록이라 부른다.


실행중인 프로그램에서 참조하는 주소가 실제 메모리에 있는 주소와 달라서, 메모리상의 주소로 변환이 필요할 때 하는 것이 사상이다.

프로그램에서 CPU가 참조하는 주소를 가상주소라고 하며, Address Translation을 통해 실제로 참조되는 메모리상의 주소를 실주소 or 물리적 주소라 한다.


왜 주소를 이렇게 다르게 하는 이유는 뭘까?

1. 주소 지정이 컴파일 시 발생

프로그램이 실행될 때 참조하는 주소가 컴파일 될 때 지정된다는 것이다. 참조하는 주소가 실 주소이므로, 프로그램은 항상 메모리의 지정된 곳으로만 적재


2. 재배치 시

메모리에서의 위치를 적재될 때마다 바꿀 수 있어서 융통성과 함께 메모리의 효율적이 이용이 가능하지만, 프로그램이 전부가 통째로 연속적인 메모리에 적재 되어야 함을 전제를 가진다.

실행 시에 참조되는 주소는 프로그램 내에서 어느 정도의 위치에 있는지를 나타내는 상대주소일 것이며, 실 주소는 메모리에 적재될 때의 시작 주소 값(재배치 레지스터에 있음)에 상대주소 값을 더해주면 된다.


<주소 바인딩(Address binding)>

논리적 주소(logical address)를 실행되기 위해서는 물리적 주소로 사상하는 것

주소 바인딩 종류는 컴파일 시간(compile time) 바인딩, 적재 시간(load time) 바인딩(by Relocation), 실행 시간(execution time) 바인딩이 있다.


[논리적 주소와 물리적 주소]

중앙처리장치가 생성하는 주소를 논리적 주소라 하며, 기억장치가 취급하는 주소를 물리적 주소라 한다.

기억 장치 관리기(MMU : Memory Management Unit) : 재배치(relocation) 레지스터는 세그먼트의 시작주소를 가지고 있으며, 논리적 주소가 들어올 때마다 모든 주소에 재배치 레지스터가 가지고 있는 값을 더해서 물리적 주소를 만든다.

 



 

Copyright2014 By 휴먼사이언스

posted by 경원구