누가 내 메모리를 훔쳤나? [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에서 대형 메모리 지원 기능을 사용할 수 있다
*사실 이 글 쓰는 것 보다는 위에 단순한 그림 만드는 게 훨씬 오래 걸렸습니다. 아무래도 전 예술과는 좀 거리가 있는 사람인가 봅니다.
*‘누가 내 치즈를 옮겼나?’라는 책 제목을 패러디 해보았는데 그리 호응이 좋을 거라 생각이 들지는 않는군요..
Comments
Anonymous
January 01, 2003
안녕하세요~ sankim 입니다. 최근 들어 여러 Windows 관련 커뮤니티나 블로그를 방문하면서 가장 많이 눈에 뜨이는 질문이면서도 정확한 답을 얻기 어려운 것이 WindowsAnonymous
January 01, 2003
이전에 실제 물리 메모리가 Windows에서 전부 보이지 않는 현상에 대해서 ‘누가 내 메모리를 훔쳤나’ 라는 제목으로 포스트 한적이 있었습니다. 지금까지는 시스템이 온라인 되어 있는Anonymous
January 01, 2003
지난 ‘ Windows 메모리 FAQ ’에서 Windows 메모리에 대한 이야기를 드렸는데요, 특히 Windows 클라이언트의 4GB 제한에 대해서 여러분들의 아주 뜨거운(?) 반응이Anonymous
January 01, 2003
다음에는 PAE, /3GB 에 대해서도 이야기 해봐야 겠군요 :) 생각보다 궁금해 하시는 분들이 많으신것 같아서요..Anonymous
January 01, 2003
저거.. 전 집에서 혼자 한시간을 낑깅대다가.. ㅠㅠAnonymous
January 01, 2003
안녕하세요~ sankim 입니다. 최근 들어 여러 Windows 관련 커뮤니티나 블로그를 방문하면서 가장 많이 눈에 뜨이는 질문이면서도 정확한 답을 얻기 어려운 것이 WindowsAnonymous
January 01, 2003
/3gb 옵션을 붙이시면 VM의 User mode에서 2gb 이상이 할당 됩니다.Anonymous
May 31, 2007
좋은 내용도 내용이지만.. [사실 이 글 쓰는 것 보다는 위에 단순한 그림 만드는 게 훨씬 오래 걸렸습니다. 아무래도 전 예술과는 좀 거리가 있는 사람인가 봅니다.] => 완전공감이요.. ^^ 저도 아이콘 디자이너에게 부탁하기 뭣 하거나, 자리에 없을 때 혼자 수정해 본다고 붙잡고 있다가 30~40분 그냥 까먹어 버린기억이 많습니다.Anonymous
May 31, 2007
하지만 PAE 옵션을 쓰면 Memory Addressing을 위해 또 메모리의 일부가 날라가 버린다는 슬픈 현실... 차라리 x64 비스타를 쓰는게...ㅋ (WOW32에서 돈다는게 왠지 찜찜하지만...)Anonymous
December 17, 2007
PAE 옵션을 써도 단일 프로그램에서 2GB 이상은 할당이 안되던데, 그 이상의 물리적 메모리를 사용하는 방법은 없을까요?Anonymous
September 01, 2014
너무 잘 정돈된 자료 감사할 따름입니다.