내 Windows에서 메모리 4기가가 왜 다 나오지 않지?

4GB 의 메모리가 설치되어 있는 경우와 관련된 마이크로소프트 고객 지원 문서(https://support.microsoft.com/?id=929605)를 보시면 아래의 설명이 있습니다.

clip_image002

위의 이야기를 조금 쉽게 설명드리면, 하드웨어가 작동하기 위해서는 메모리가 필요합니다.

대표적인 하드웨어가 바로 비디오 카드가 여기에 해당됩니다. 운영 체제에서는 물리적인 메모리 주소(Physical Memory Address)의 값을 실제 운영 체제에서 사용할 수 있는 메모리 용량으로 표시해줍니다.

그렇지만 위의 설명된 하드웨어가 사용할 메모리 맵핑용(MMIO)가 할당되게 되면, 아래의 그림과 같은 물리적인 메모리 주소 형태가 되게 됩니다. MMIO의 메모리 영역이 할당되고, 나머지 실제 메모리(4GB)가 할당되지만, 32비트 운영 체제의 한계인 2의 32승 = 4G를 넘어가기 때문에 인식을 못하는 형국이 되게 됩니다.

하드웨어에서 메모리 할당을 이렇게 하도록 되어져 있기 때문이므로, Windows Vista, Windows XP, 기타 여러 운영 체제에서 동일한 형태를 띄게 됩니다.

결론적으로, 실제 메모리 영역은 존재하지만, 32bit 운영 체제에서 인식을 하지 못하는 형태가 되는 것이죠.

clip_image003
<출처 : Sankim의 블로그>

이를 인식시키기 위해서는 OS 주소 범위를 64bit로 확장하는 PAE 옵션을 사용하던지, x64 운영 체제를 이용해야 합니다. x64 운영 체제에서는 2의 64승까지 인식할 수 있기 때문에, 공중에 떠있던 MMIO 점유량만큼을 더 인식할 수 있게 됩니다. 32bit 운영체제에서 PAE(Physical Address Extension) 옵션을 사용하는 방법에 대해서는 https://support.microsoft.com/?id=929580에 나와있습니다.

Windows Vista 서비스팩 1에서는 이러한 혼란을 감소시키고자, 시스템의 물리적인 메모리에 대한 양을 BIOS에 질의하여 답을 받는 형태로 변경되어져 있으며, 이는 하드웨어 BIOS에 따라 지원여부가 판단됩니다. 그렇지만, 작업 관리자(Task Manager)에서 표시되는 실제 사용 가능한 물리적인 메모리 주소는 여전히 감소된 양을 표시합니다. (밑의 예제에서 보신데로 실제 표시는 4G로 나오나, 사용 가능한 메모리는 3454M로 나타납니다.)

clip_image005 clip_image007