728x90

먼저 가상 주소 공간(virtual address space)이라는 새로운 개념에 대하여 설명해보겠습니다. 가상 주소 공간이란 어플리케이션이 사용 가능한 최대 주소 공간을 말합니다. 아키텍쳐에 따라서 주소지정을 위해 필요한 비트수가 달라지기 때문에 가상 주소 공간은 어느 아키텍쳐에 따라서 달라집니다. 가상 주소 공간은 또한 운영 체제의 구현 방식으로 인해 아키텍쳐에 의해 정해진 제한에 추가적인 제한을 부가할 가능성도 있으므로 운영 체제에 따라서도 달라집니다.

가상 주소 공간에서 "가상"이라는 단어는 어플리케이션이 사용 가능한 고유 주소 지정 메모리 위치의 총 숫자를 말합니다. 그러나 시스템에 설치된 물리적 메모리의 양이나 어플리케이션에 주어진 물리적 메모리의 양을 의미하지는 않습니다.

앞서 설명한 예시 어플리케이션의 경우 가상 주소 공간은 15000 바이트입니다.

가상 메모리를 구현하기 위해서는 컴퓨터가 특수 메모리 관리 하드웨어를 갖추고 있어야만 합니다. 이 하드웨어는 종종 MMU (Memory Management Unit)라고 부르기도 합니다. MMU가 없이는 CPU RAM에 접근할때 실제 RAM의 위치가 절대 변경되지 않기 때문에 메모리 주소 123 RAM에서도 동일한 물리적 주소를 갖게됩니다.

그러나 MMU를 사용하는 경우 각 메모리에 접근하기 이전에 메모리 주소 번역 작업을 수행합니다. 즉 메모리 주소 123가 한번은 물리적 주소 82043으로 지정되었다가 다음엔 물리적 주소 20468로 지정될 수 있다는 것을 의미합니다. 그러나 수억만 바이트에 이르는 메모리를 하나씩 가상 주소에서 물리적 주소로 번역하게되면 작업 부하가 너무 높아지므로, MMU RAM을 여러 부분페이지(pages)로 나누어 각 페이지를 하나의 독립된 항목으로 처리합니다.

이 페이지 및 주소 번역 정보를 기억하는 작업은 복잡하고 불필요해 보일 수도 있습니다. 그러나 이 작업은 가상 메모리를 구현하는데 결정적인 절차입니다. 이러한 주장을 뒷받침하기 위하여 예를 들어 설명해보겠습니다.

앞서 설명해왔던 15000 바이트 가상 주소 공간을 가진 가상 어플리케이션을 예로 들겠습니다. 이 어플리케이션의 첫번째 명령어가 주소 12374에 저장된 데이터에 접근한다고 가정해봅시다. 그러나 컴퓨터에는 오직 12288 바이트의 물리적 RAM만 존재하는 경우 CPU가 주소 12374에 접근 시도한다면 어떠한 결과가 발생하겠습니까?

이러한 현상을 페이지 폴트(page fault)라고 부릅니다.

 

728x90

'OS' 카테고리의 다른 글

SJF(Shortest Job First)  (1) 2014.10.17
파이프라인(Pipeline)  (0) 2014.10.17
thrashing  (0) 2014.10.17
cent os 5,6 version 설치  (0) 2014.03.21
BackTrack on ARMv6  (0) 2013.08.23

+ Recent posts