주소 공간

위키백과, 우리 모두의 백과사전.
이동: 둘러보기, 검색
가상 주소 공간과 물리 주소 공간의 관계

컴퓨팅에서 주소 공간(住所 空間)은 분리된 주소의 범위를 정의하며, 각 주소 범위는 물리 메모리나 가상 메모리, 레지스터, 네트워크 호스트, 주변 기기, 디스크 섹터, 다른 논리적 실체나 물리적 실체에 상응한다. IANA[1]는 수많은 다양한 레지스트리들을 할당함으로써 이들이 각각 저만의 특정한 주소 공간을 관리할 수 있게 한다.

메모리 주소는 컴퓨터 메모리의 물리 위치를 파악하며, 데이터가 저장되는 위치를 가리킨다. 이러한 주소는 마을의 거리 주소와 비슷하며, 다시 말해 마치 사람이 사는 주소와 비슷하다. 사람의 주소에 빗대어 볼 때, 주소 공간은 이웃, 마을, 도시, 국가와 같은 위치의 지역이 될 수 있다. 두 개의 주소는 숫자로 볼 때는 같지만 다른 주소 공간에 속해 있는 경우 다른 위치를 일컫는다. 이를테면, 어느 한 사람의 집 주소가 "32번지"일 때, 다른 사람의 집 주소도 "32번지"일 수도 있지만, 이 경우 사는 곳의 마을과 국가가 다르다는 것을 뜻한다.

프로세스와 주소공간[편집]

일반적으로 운영 체제는 하나의 프로세스에 대하여 하나의 주소공간을 제공하며, 프로세스 내의 사용자 스레드들은 주소공간을 공유한다.

C/C++ 등으로 프로그램을 하고 컴파일 과정과 링크되면 실행 파일이 만들어진다. 실행 파일의 메모리 맵은 데이터 특성에 따라 나누어 저장되어 실행되도록, 그리고 하나의 메모리 공간이라고 규정하고 차례로 배치된다. OS에 의해 메모리에 적재되어 실행이 되려면 우선 해당 메모리의 공간을 할당 받고 적재되어야 한다. 메모리 공간을 할당할 때, 메모리 자원을 할당하는 물리적 주소는 프로그램의 실행 파일에서 제시된 메모리 맵의 주소값과 다른것이 보통인데 이를 중개하는 것이 MMU이다. OS에 의해 할당된 물리적 주소는 전체 CPU 입장에서의 주소 공간이므로 프로세서의 논리 주소와는 액세스 단위로 변환이 이루어져야 하므로 논리회로에 의해 고속 변환이 이루어져야 한다. 그리고 한 개의 프로세서라도 물리적 메모리에 순차적으로 적재되지 않을 수 있다.

주소공간의 크기[편집]

주소공간의 크기는 CPU(마이크로프로세서)의 주소 버스의 크기에 따라 결정된다. 만약 주소 버스가 32비트인 시스템에서는 2^{32}개의 서로 다른 주소에 대한 식별자를 만들 수 있으므로 0부터 2^{32}-1까지의 주소범위를 제공할 수 있다.

8비트 마이크로프로세서의 주소공간은 대부분 16비트를 갖는다. 액세스 단위는 8비트 이다. 그러나 8비트 MCU의 많은 경우는 한개의 CPU 내에서도 8 또는 16비트의 주소 공간을 갖는다. 이런 주소 공간은 C 프로그램의 경우 구별할 수 있는 수단을 제공 하고, 개발자가 지정할 수가 있다.

주소 공간의 예[편집]

리눅스 커널의 경우 다음과 같은 예를 들 수 있다:

주석[편집]

  1. IPv4 Address Space Registry (영어). Internet Assigned Numbers Authority (IANA) (March 11, 2009). 2009년 3월 15일에 확인.

같이 보기[편집]