가상 주소 공간

위키백과, 우리 모두의 백과사전.
이동: 둘러보기, 검색

가상 주소 공간(영어: Virtual Address Space; VAS)은 가상 메모리 기법으로 제공되는 주소 공간으로서, 프로세스의 관점에서 사용하는 주소이다.

오늘날 대부분의 운영 체제에는 가상 메모리 기법이 적용되어 있다. 가상 메모리에서의 주소 공간, 즉 가상 주소 공간은 프로세스가 참조할 수 있는 주소들의 범위이며, 하나의 프로세스 당 하나의 가상 주소 공간이 주어진다. 일반적으로 스레드는 프로세스 내의 주소 공간을 공유한다.

주소 공간의 크기는 주소 버스의 크기에 따라 달라진다. 예를 들어 주소 버스가 32비트인 시스템에서 주소 공간의 크기는 2^{32}개의 서로 다른 주소에 대한 식별자를 만들 수 있으므로 0부터 2^{32}-1까지의 주소 범위를 가진다.

실제[편집]

32비트 윈도에서는 기본적으로 응용 프로그램에 4GB의 가상 주소 공간이 주어진다. 이 중에서 2GB(0x00000000 ~ 0x7FFFFFFF)는 사용자 모드 공간(응용 프로그램마다 독립적으로 사용 가능한 공간)이고, 나머지 2GB(0x80000000 ~ 0xFFFFFFFF)는 운영 체제에서 사용하는 커널 가상 주소 공간이다.[1] boot.ini에 '/3GB' 옵션을 붙여 윈도를 시작하면 개별 응용 프로그램에서 3GB까지 사용자 모드 가상 주소 공간을 사용할 수 있다. 그러한 응용 프로그램을 개발할 때에는 IMAGE_FILE_LARGE_ADDRESS_AWARE 옵션을 주어야 한다.[2]

64비트 윈도에서는 기본적으로 8TB의 사용자 모드 공간이 주어진다. 단, /LARGEADDRESSAWARE:NO 옵션을 주어 링크하면 인위적으로 2GB로 제한할 수 있다.[3][4] 64비트 윈도에서 32비트 프로그램을 구동할 때 /LARGEADDRESSAWARE:YES 옵션을 주면 사용자 모드 공간을 4GB까지 사용할 수 있다.[5]

참고[편집]

  1. (영어) http://msdn.microsoft.com/en-us/library/aa366912(VS.85).aspx
  2. (영어) http://msdn.microsoft.com/en-us/library/ms680349(v=VS.85).aspx
  3. http://msdn.microsoft.com/en-us/library/wz223b1z%28v=VS.100%29.aspx
  4. http://msdn.microsoft.com/en-us/library/aa384271%28VS.85%29.aspx
  5. http://msdn.microsoft.com/en-us/library/wz223b1z(VS.80).aspx

같이 보기[편집]