누가 내 메모리를 훔쳤나? [4GB 이상 물리 메모리가 정상적으로 윈도우에 인식되지 않는 현상]

누가 내 메모리를 훔쳤나?

많은 분들이 4GB 이상 메모리를 탑재한 32bit Windows에서 물리 메모리 4GB가 전부 나타나지 않고 3.xGB 식으로 나타나는 경우를 보셨던 경험이 있으실 것입니다. 누가 내 컴퓨터를 분해해서 메모리만 딸랑 훔쳐간 걸까요?

ㅁㄴ

이 현상에 대한 원인과 답은 아래 KB929605 문서에서 잘 나와있습니다. 아래 부분을 읽기 전 정독해서 읽어 보시기 바랍니다.

------------------------------------------------------------------------------------------

[KB929605 일부입니다.]

원인

이 동작은 특정 하드웨어 및 소프트웨어 요소의 예상된 결과입니다.

일반적인 컴퓨터에서는 다양한 장치가 메모리 매핑된 액세스를 필요로 하는데, 이것을 MMIO(메모리 매핑된 I/O)라고 합니다. MMIO 공간을 32비트 운영 체제에 사용하려면 해당 MMIO 공간이 첫 4GB의 주소 공간 내에 있어야 합니다.

예를 들어, 256MB의 온보드 메모리를 사용하는 비디오 카드의 경우 해당 메모리가 첫 4GB의 주소 공간 내로 매핑되어야 합니다. 4GB의 시스템 메모리가 이미 설치되어 있는 경우 이 주소 공간의 일부가 그래픽 메모리 매핑용으로 예약되어 있어야 합니다. 그래픽 메모리 매핑은 시스템 메모리의 일부를 덮어씁니다. 따라서 운영 체제에 사용할 수 있는 총 시스템 메모리 양이 줄어듭니다.

사용 가능한 시스템 메모리의 감소는 컴퓨터에 설치된 장치에 따라 다릅니다. 그러나 잠재적인 드라이버 호환성 문제를 방지하기 위해 32비트 버전의 Windows Vista에서는 사용 가능한 총 메모리가 3.12GB로 제한됩니다. 잠재적인 드라이버 호환성 문제에 대한 자세한 내용은 "추가 정보" 절을 참조하십시오.

컴퓨터에 많은 장치가 설치되어 있는 경우 사용 가능한 메모리가 3GB 이하로 줄어들 수 있습니다. 그러나 32비트 버전의 Windows Vista에서 사용할 수 있는 최대 메모리는 대개 3.12GB입니다.

[참고문서]

KB929605: 4GB의 RAM이 설치되어 있는 경우 Windows Vista의 시스템 정보 대화 상자에 보고되는 시스템 메모리가 예상한 것보다 작다

KB929580: Windows Vista or Windows Server 2003 may report less memory than you expect

------------------------------------------------------------------------------------------

위에 말이 무슨 말인지 이해가 잘 안 되신다고요? 그렇다면 아래 그림을 보시죠~

메모리

PCI Bus, BIOS 그리고 비디오 카드 등에서 사용하는 MMIO는 물리 메모리 첫 4GB의 영역에 위치하게 됩니다. 그러면 MMIO의 크기만큼의 물리 메모리 영역이 4GB 범위 위로 밀려(?) 올라가 버리게 되지요, 그림(2)를 보시면 MMIO로 인해 실제 물리 메모리가 위로 밀려났다는 의미를 이해 하실 수 있으실 겁니다.

윈도우뿐만 아니라 다른 운영체제들도 32bit 시스템은 4GB address 까지만 액세스가 가능합니다. 그러므로 MMIO가 포함된 4GB 영역까지만을 볼 수 있게 됩니다 이때 MMIO는 실제 물리 메모리가 아니므로 OS는 사용할 수 있는 물리 메모리 계산에서 제외하게 됩니다. 그래서 OS는 MMIO영역을 뺀(4GB-0.5GB=3.5GB) 나머지 3.5GB만을 인식하게 됩니다. 이 문제는 해당 문서가 이야기 하듯이 하드웨어 이슈입니다(OS 잘못은 없어요~).

Workaround로 boot.ini파일 내에서 PAE 모드를 설정 하면 address 범위 자체가 36bit로 확장되어 MMIO 때문에 위로 밀려나 보이지 않던 실제 메모리 영역까지 볼 수 있어 정확히 4GB를 표시하게 됩니다. PAE 자세한 설정 방법은 아래 문서를 참고 하십시오.

참고로 문서에도 있지만 비스타의 경우에는 장치가 4GB를 지원 요구사항을 만족시키지 못하면 드라이버 호환 문제를 피하기 위해 총 사용 가능한 메모리를 3.12GB로 제한 합니다.

KB283037: Windows 2000 및 Windows Server 2003에서 대형 메모리 지원 기능을 사용할 수 있다

*사실 이 글 쓰는 것 보다는 위에 단순한 그림 만드는 게 훨씬 오래 걸렸습니다. 아무래도 전 예술과는 좀 거리가 있는 사람인가 봅니다.

*‘누가 내 치즈를 옮겼나?’라는 책 제목을 패러디 해보았는데 그리 호응이 좋을 거라 생각이 들지는 않는군요..