누가 내 메모리를 훔쳤나? [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입니다.
 
[참고문서]
------------------------------------------------------------------------------------------
위에 말이 무슨 말인지 이해가 잘 안 되신다고요? 그렇다면 아래 그림을 보시죠~
메모리
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로 제한 합니다.
*사실 이 글 쓰는 것 보다는 위에 단순한 그림 만드는 게 훨씬 오래 걸렸습니다. 아무래도 전 예술과는 좀 거리가 있는 사람인가 봅니다.
*‘누가 내 치즈를 옮겼나?’라는 책 제목을 패러디 해보았는데 그리 호응이 좋을 거라 생각이 들지는 않는군요..
Comments (11)

  1. Anonymous says:

    안녕하세요~ sankim 입니다. 최근 들어 여러 Windows 관련 커뮤니티나 블로그를 방문하면서 가장 많이 눈에 뜨이는 질문이면서도 정확한 답을 얻기 어려운 것이 Windows

  2. Anonymous says:

    이전에 실제 물리 메모리가 Windows에서 전부 보이지 않는 현상에 대해서 ‘누가 내 메모리를 훔쳤나’ 라는 제목으로 포스트 한적이 있었습니다. 지금까지는 시스템이 온라인 되어 있는

  3. Anonymous says:

    지난 ‘ Windows 메모리 FAQ ’에서 Windows 메모리에 대한 이야기를 드렸는데요, 특히 Windows 클라이언트의 4GB 제한에 대해서 여러분들의 아주 뜨거운(?) 반응이

  4. Anonymous says:

    다음에는 PAE, /3GB 에 대해서도 이야기 해봐야 겠군요 🙂 생각보다 궁금해 하시는 분들이 많으신것 같아서요..

  5. Anonymous says:

    저거.. 전 집에서 혼자 한시간을 낑깅대다가.. ㅠㅠ

  6. Anonymous says:

    안녕하세요~ sankim 입니다. 최근 들어 여러 Windows 관련 커뮤니티나 블로그를 방문하면서 가장 많이 눈에 뜨이는 질문이면서도 정확한 답을 얻기 어려운 것이 Windows

  7. Anonymous says:

    /3gb 옵션을 붙이시면 VM의 User mode에서 2gb 이상이 할당 됩니다.

  8. 뱃살왕자 says:

    좋은 내용도 내용이지만..

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

    저도 아이콘 디자이너에게 부탁하기 뭣 하거나, 자리에 없을 때 혼자 수정해 본다고 붙잡고 있다가 30~40분 그냥 까먹어 버린기억이 많습니다.

  9. MayStyle says:

    하지만 PAE 옵션을 쓰면 Memory Addressing을 위해 또 메모리의 일부가 날라가 버린다는 슬픈 현실…

    차라리 x64 비스타를 쓰는게…ㅋ (WOW32에서 돈다는게 왠지 찜찜하지만…)

  10. 궁궁이 says:

    PAE 옵션을 써도 단일 프로그램에서 2GB 이상은 할당이 안되던데, 그 이상의 물리적 메모리를 사용하는 방법은 없을까요?

  11. 재크 says:

    너무 잘 정돈된 자료 감사할 따름입니다.

Skip to main content