Windows 메모리 FAQ

안녕하세요~ sankim 입니다.

최근 들어 여러 Windows 관련 커뮤니티나 블로그를 방문하면서 가장 많이 눈에 뜨이는 질문이면서도 정확한 답을 얻기 어려운 것이 Windows 메모리 관련 질문들인 것을 보았습니다. 그래서 메모리 관련해서 가장 많이 올라오는 질문들에 대해서 간단한 답을 정리해 보았습니다. 자세한 기술적 내용은 꼭 한번 시리즈(?)로 올릴 것을 약속 드립니다. ^^

Windows Memory FAQ

1. Windows에서 사용 할 수 있는 최대 메모리(Windows Maximum Memory Size) 크기는 얼마인가요?

현재 나와 있는 Windows 클라이언트는 Vista Ultimate의 경우 32-bit OS는 4GB, 64-bit는 128GB 이며 Windows 서버 Windows Server 2008 Enterprise는 32-bit는 64 GB, 64-bit는 2 TB입니다. 자세한 사항은 여기를 누르시면 각 Windows 별 최대 메모리를 확인 할 수 있습니다. 

 

2. XP, Vista와 같은 32-bit Windows Client에서 4GB 이상 메모리를 사용할 수 있는 방법은 없나요?

32-bit Windows Client(Windows 2000 Professional, XP, Vista)는 메모리 4GB까지만 인식합니다, 4GB 이상의 메모리를 사용하고 싶으신 분들께서는 64-bit Edition을 사용하시거나 혹은 Windows Server 제품을 이용하셔야 합니다. 개인적으로 4GB 이상 사용하는 방법에 대한 Tip이나 Trick이 있다는 글들을 본적이 있는데 모두 근거가 없거나 실제 메모리가 확장되어 사용하는 방법이 아닌 것으로 보입니다.

 

3. Windows Client에서 메모리 4GB를 설치 했는데 Windows에서 4GB로 보이지 않고 3.xxGB로 보여요

실제 장착된 물리 메모리를 OS가 인식하기 위해서는 그 메모리 정보를 H/W가 Windows에게 알려줘야 합니다, 그런데 PCI Bus, BIOS 그리고 비디오 카드 등에서 사용하는 PCI Bus, BIOS 그리고 비디오 카드 등에서 사용하는 MMIO가 Windows에서 인식하기 위한 물리 메모리 공간 중간에 끼어 들면서 MMIO 크기만큼 실제 메모리가 밀려나 버리게 됩니다, 그래서 윈도우는 밀려난 실제 메모리 영역을 인식하지 못한 나머지 영역만을 실제 메모리로 인식해 실제 메모리보다 적은 양을 사용하게 됩니다. 이는 하드웨어 이슈 입니다.

image

*경우에 따라 Windows Vista에서 4GB를 장착하였는데 3.12GB로 나오는 경우가 있습니다 이는 디바이스 드라이버 호환성 문제를 피하기 위해 Vista가 의도적으로 3.12GB로 설정 하는 것입니다.

자세한 사항은 아래 링크를 참조 하십시오.
https://blogs.technet.com/sankim/archive/2007/05/31/4gb.aspx

 

4. Windows Vista SP1(Service Pack 1)을 설치 하니 3.xxGB 보이던 메모리가 4GB로 나타납니다.

Windows Vista Service Pack 1에서부터는 실제 메모리의 정보를 직접 BIOS에서 가져와 시스템 정보에서 보여 줍니다, 그러나 BIOS 호환성에 따라 지원 되지 않을 수도 있습니다.

image

위 그림에서 왼편 Memory (RAM)에는 4GB라고 나오지만 오른편 실제 사용할 수 있는 Physical Memory에는 3061(3.0GB)이라고 나타납니다. 이렇듯이 Windows Vista SP1을 설치 하면 작업 관리자 등에서 4GB 전체를 보실 수 있습니다만 MMIO로 인한 메모리 사용의 제한은 그대로 받게 됩니다.

자세한 사항은 아래 포스팅을 참조 하십시오.
https://blogs.technet.com/sankim/archive/2008/01/31/windows-vista-service-pack-1.aspx

Windows 7에서는 리소스 모니터를 통해 이것을 비주얼 하게 보여 줍니다.

 

5. 메모리를 64-bit로 확장해 준다는 PAE 옵션은 무엇인가요?

32-bit 윈도우가 사용할 수 있는 4GB 메모리 한계를 최대 64GB 까지 확장해주는 기술입니다.

1) X86 CPU(Processor)를 사용하는 32bit 운영체제의 최대 메모리는 2^32(32bit)로 4GB 입니다.
2) 과거에 4GB는 엄청난 크기였지만 세월이 흐르면서 데이터베이스 같이 큰 메모리가 필요한 응용프로그램들이 나타났습니다. (제가 처음 지원했던 Windows NT의 메모리가 128MB였던 걸로 기억합니다)
3) 그래서 CPU(Processor) 회사는 컴퓨터가 사용할 수 있는 물리 메모리 영역을 아주 크게(36Bit로) 확장 할 수 있는 PAE라는 기술을 만들어냈습니다.
4) Windows는 CPU가 제공하는 이 PAE 기술을 이용하여 4GB 메모리 크기의 한계를 극복 할 수 있게 되었습니다.
5) Windows가 CPU에서 제공하는 PAE를 사용하기 위해서는 boot.ini에서 /PAE 옵션을 추가 합니다. Windows Vista 이상 환경에서는 ‘bcdedit /set [{해당 윈도우GUID}] pae ForceEnable’을 실행 합니다.
6) PAE로 확장된 상태라도 AWE(Address Windowing Extensions) 함수를 이용하지 않는다면 PAE로 확장된 메모리 모두를 Application이 모두 사용 할 수 없습니다 그러나 OS가 file Cache Data등으로 사용합니다.
7) XP, Vista와 같은 Windows Client에서는 PAE를 사용해도 4GB 이상으로 확장되지 않습니다

PAE를 사용하는 경우 CPU의 MMU(Memory Management)가 Virtual address에 Page directory pointer를 추가(three-level page table)하는 방식으로 필드를 4개로 나눠 메모리를 확장합니다.

clip_image006

[Virtual Address(x86)의 경우]

clip_image008

[PAE 활성화된 Virtual Address(x86)의 경우]

 

6. /3GB 옵션은 무엇인가요?

4GT 기술이라고 하는데 흔히 /3GB 옵션이라고도 부르며 응용프로그램에 더 많은 메모리를 할당하기 위한 기술입니다.

x86 컴퓨터에서 사용되는 기술로써 가상 메모리 공간 4GB를 둘로 나눠 2 GB는 System Space, 2GB는 User Space에 할당 합니다. System Space는 시스템이 이용하는 리소스(System cache, hyperspace, system cache, page pool 등)에 할당 하고 User Space는 사용자 응용프로그램(응용프로그램, 데이터 등)이 사용하는 공간 입니다. 만약 /3GB 옵션을 추가하게 되면 System Space에는 1GB를 할당하고 User Space에는 나머지 메모리 공간을 할당하게 됩니다. 그러면 응용프로그램이 사용할 수 있는 메모리 크기가 증가되어 응용프로그램에서 더 많은 메모리를 사용 할 수 있는 것입니다. 그러나 시스템 리소스가 많이 필요한 경우 /3GB로 System Space에 1GB만 할당하기 때문에 시스템 리소스의 부족으로 성능 저하를 가져 올 수 있습니다. 그러므로 무조건 /3GB를 할당 할 것이 아니라 충분한 모니터링 후 사용 여부를 결정해야 합니다.

clip_image010

[왼쪽은 일반 2GB, 2GB 모델, 오른쪽은 /3GB 모델]

 

쉽게 쓴다고는 했지만 아무래도 이해하기 쉽지 않은 부분입니다, 위에서 약속 드린 것 처럼 나중에 꼭 한번 메모리 구조에 대해서 포스팅 하도록 하겠습니다.