티스토리 뷰

반응형

가상 메모리 등장 배경

컴퓨터는 프로세스 1개 또는 여러 개의 프로세스를 처리할 수 있다. 그리고 프로세스는 생성되면 작업을 처리하기 위해 메모리를 할당 받아야 한다. 우리의 컴퓨터는 여러 프로세스들을 처리할 수 있어야하는데, 작업을 처리하기 위해 존재하는 컴퓨터의 실제 메모리 자원은 한정적이다. 즉, 컴퓨터의 실제 메모리 공간보다 프로세스가 처리해야할 메모리 공간이 더 많을 수 있다는 말이다.

 

그렇다면 여러 개의 프로세스를 처리하거나, 메모리가 큰 프로세스를 처리해야할 때는 실행하지 못하는 걸까? 이 부분을 해결하기 위해 가상 메모리가 등장하게 되었다.

 

가상 메모리는 물리 메모리보다 큰 프로세스나 여러 개의 프로세스들을 동시에 실행시킬 수 있도록, 컴퓨터의 메모리가 무한하다고 느끼게하는 방법이다. 컴퓨터의 실제 메모리 자원은 한정적이지만, 무한한 것처럼 구현하면 다양한 프로세스들을 처리할 수 있다는 점에서 고안된 방법이다. 


가상 메모리란?

가상 메모리(Virtual Memory)는 운영체제에서 실제 물리 메모리(RAM)보다 큰 주소 공간을 프로세스에 제공하기 위해 사용되는 기술이다. 

 

CPU가 프로세스를 처리할 때, 특정 시점에 프로세스의 특정 메모리를 접근(액세스)하는 주소값은 아주 작을 것이다. 그 주소값이 아주 작다는 점을 착안하여 고안된 방법이다. 가상 메모리는 프로세스와 관련된 주소값을 저장하는 메모리 공간을 분리하여 관리함으로써, 내 컴퓨터의 메모리가 실제 메모리보다 많아 보이게하는 기술이다. 이게 무슨말인지는 아래에서 더 자세히 설명하겠다.


 

위에서 프로세스를 처리하기 위해 주소값을 사용한다고 말했다. 이때 사용하는 개념이 가상 주소와 물리 주소이다.

 

 

가상 주소(Virtual Address)

프로세스가 참조하는 주소이다.

 

② 가상 주소는 프로세스마다 독립적으로 할당 되며, 프로세스는 자신만의 가상 주소 공간을 가지고 있다고 생각한다. 

 

③ 가상 주소는 논리적인 주소이다. 운영체제는 프로세스에게 연속된 가상 주소 공간을 제공하고, 이를 필요한 크기의 물리 메모리 페이지로 매핑 한다. 이 작업으로 메모리 공간의 낭비를 최소화 할 수 있다.

 

④ 만약, 가상 주소를 사용하지 않고 프로세스의 모든 데이터들을 물리 주소로 접근한다고 생각해보자. 여러 개의 프로세스들이 실행되면서 같은 물리 주소를 접근해서 데이터를 수정하고, 민감 데이터를 쉽게 읽어온다면 오류가 발생할 것이다.

 

⑤ 프로세스마다 다른 가상 주소를 사용하면 같은 물리 주소 위치를 가르키고 있을 수 있지만, 읽고 쓰고할 수 있는 공간은 가상 주소 공간에서만 제한되므로 실제 물리 주소의 데이터들이 수정되거나, 프로세스들이 동시에 접근해서 충돌하는 일은 없을 것이다. 

 

 

물리 주소(Physical Address)

실제 메모리의 주소이며 하드웨어에서 직접 접근 가능한 주소이다.

 

② 시스템 전체적으로 공유되는 주소이며, 여러 프로세스가 공유 메모리 영역을 사용할 때 사용된다.

 

프로세스가 물리 주소로 접근하려면, 물리 주소를 가르키고 있는 가상 주소를 물리 주소로 변환해야 한다.


가상 메모리 동작 원리

프로세스는 생성될 때 메모리를 일정하게 할당 받는다. 그런데 프로세스가 모든 메모리 공간을 사용하는 것이 아니라, 처리해야할 데이터나 작업에 따라 공간을 모두 사용할 수도 있고, 공간이 남을 수도 있다. 이때, 프로세스가 차지하는 실제 메모리 공간만 물리 메모리(RAM)에 넣고, 이 물리 메모리를 접근할 수 있는 가상 주소를 프로세스의 메모리에 저장한다. 

 

그 이후, 프로세스가 작업을 처리하기 위해 CPU를 호출하고, CPU는 작업을 처리하기 위해 특정 데이터를 조회할 수 있다. 이때, 특정 데이터가 물리 메모리(RAM) 어디에 있는지는 데이터의 가상 주소를 통해 알 수 있다. 프로세스는 CPU에게 작업을 요청할 때 데이터의 가상 주소를 넘긴다.

 

가상 주소는 실제 물리 주소와 이어져 있지만, 가상 주소가 차지하는 가상 메모리 공간은 아주 작다. 실제 데이터는 큰 물리 공간을 차지하고 있겠지만, 가상 메모리로 인해 아주 작은 메모리 공간을 차지하면서 실제 메모리와 연결되어있는 것이다. 

 

CPU는 작업을 처리하기 위해 실제 데이터가 어디에 있는지 물리 주소 위치를 알아야하는데, 이때 가상 주소를 물리 주소로 변환하는 작업을 거친다. 가상 주소를 물리 주소로 변환하는 작업을 하는 시스템은 MMU 이다.


MMU(Memory Management Unit)

MMU는 가상 주소를 물리 주소로 변환하고, 메모리를 보호하는 기능을 수행한다.

 

② MMU를 사용하게 되면, CPU는 각 물리 메모리에 접근하기 이전에 메모리 주소 변환 작업을 거친다. 

 

③ MMU는 굉장히 빈번하게 작업을 처리해야 하기 때문에, 소프트웨어 코드만으로는 이 작업을 수행하기 벅차다. 그래서 메모리 관리 작업을 하는 특수한 하드웨어를 따로 컴퓨터에 설치해야 한다. (실제로는 작은 칩을 컴퓨터에 꽂아서 사용한다)

 

④ MMU가 메모리를 일일이 가상 주소에서 물리 주소로 변환하게 되면, 작업 부하가 높아질 수 있다. 그래서 MMU는 실제 물리 메모리 공간을 여러 페이지 단위로 나눠서, 각 페이지 단위로 데이터를 처리한다.


결론

가상 메모리에서는 각 데이터 메모리를 페이지 단위로 저장 및 관리하고, 그 페이지의 가상 주소를 물리 주소로 변환해서 실제 물리 데이터에 접근할 수 있다.

 

반응형
댓글
공지사항