2015. 1. 29.

[OS]가상메모리(VIrtual Memory) - 2. 가상 주소 시스템(Virtual Address System)

 시스템과 메모리 할당 사이의 관계에서 해결하지 못했던 궁금증을 이번에는 반드시 개운하게 풀어보고자 한다. 하지만 포스팅하면서도 또 분량이 늘어져서 3편, 4편으로 이어질 것 같다. 분명히.


가상주소(virtual address)

 지난 포스팅에서 32비트 시스템에서 2G바이트 RAM으로 어떻게 4G바이트를 할당할 수 있는지 답을 내리지 못하고 마무리하였다. 분명한 사실은 4G바이트를 할당하였다는 점이다. 어떻게든 할당하였다. 메모리가 모자람에도 불구하고 할당하였다는 점은 실재 메모리말고 다른 어떤 메모리가 있다는 것을 의미한다. 그래야 실재 메모리 이상을 할당할 것이 아닌가. 그런 메모리를 할당하고 관리하는 주체가 바로 운영체제이다.


 먼저 32비트 시스템으로 돌아가보자. 프로세스를 하나 실행하여 메모리를 할당받는다. 최대로 할당받을 수 있는 크기는 물리적인 메모리 크기인 2G 바이트와 별개로 시스템이 표현할 수 있는 최대의 메모리 주소 공간의 크기였다. 즉 4G바이트만큼 할당받을 수 있었다. 물리적 메모리를 초과하는 용량은 4G바이트를 도대체 어디서 할당한다는 말인가? 이것 의문을 먼저 해결해보자.

 메모리 계층 구조를 떠올려보자. 느린 대신 값싸고 용량이 엄청 큰 하드디스크는 요즘 1T바이트짜리도 많이 사용한다. 그리고 메모리 계층 구조에서 알 수 있듯이 하드디스크라고 해서 메인 메모리 같은 역할을 수행하지 말라는 법은 없다. 느려서 문제일 뿐이다. 속도가 느리다는 문제를 극복할 수 있는 대안이 나온다면 하드디스크의 빵빵한 용량을 메모리 할당에 활용할 수는 있을 것 같다는 생각이 든다. 그리고 추가로 4G바이트만큼을 늘 할당할 필요도 없을 것 같다. 한번에 4G바이트만큼이나 차지하는 프로세스는 흔치 않다.


출처는 내 컴퓨터^^

 자극적인 빨간 색 네모 영역이 바로 사용하는 메모리를 표시하고 있다. Chrome이 매우 열심히 일을 하고 있다. 가장 큰 메모리를 Chrome 중 하나가 약 90,000K바이트이다. 90M바이트이다. 4G바이트로 할당하는 것은 비효율의 극치라고 볼 수 있다. 그러니 적당한 크기로 할당하는 것이 좋겠다는 생각이 든다. 실재로 운영체제도 프로세스 당 4G바이트씩 할당하는 짓은 하지 않는다. 이론적으로 그렇다는 말이다.

 지금까지의 내용을 정리해보자. RAM과 같은 메모리의 물리적 크기의 제한은 있지만 이를 초과하는 메모리 할당을 하드디스크로 할 수 있을 것 같다. 그리고 하드디스크를 사용하는 만큼 속도 문제를 고려해야할 것 같다.

 그럼 드디어 가상주소를 알아보자. 32비트 시스템에서 프로세스에 할당할 수 있는 최대 크기인 4G바이트 메모리 공간은 RAM가 같은 메모리의 물리적 주소가 아니라 실제로 존재하지 않은 가상의 주소이다. 그리고 가상의 주소를 사용하여 할당한 4G바이트에 해당하는 공간을 가상 메모리 공간(virtual address space)라고 한다.

 결국 32비트 시스템에서 할당할 수 있는 4G바이트 크기 메모리 공간은 하드디스크를 이용한 가상의 메모리 공간이었고, 이런 가상의 공간에 대한 지정해주기 위해서 가상 주소 시스템이 필요하다. 

 이제 가상 주소 공간이 어떻게 하드디스크에 구성이 되는지, 그리고 실제 RAM과는 어떤 관계가 있는지 살펴보면 된다.

댓글 없음:

댓글 쓰기