Tech&라이프

4GB가 3.2GB로 둔갑한 이유

발행일시 : 2009-06-24 10:45

운영체제(Operating System) 중에서 가장 이용자들부터 많은 운영체제는 MS 윈도(Microsoft Windows)라고 할 수 있다. 널리 이용되고 있는 만큼 인기도 있지만 반대로 욕을 가장 많이 듣는 운영체제이기도 하다. 욕을 먹는 이유는 많이 있다. 이런 이유 중에는 이용자가 잘못 알고 있는 정보로 인한 것도 있는데 가장 대표적인 것이 32비트 윈도(XP, 비스타)에서 메모리를 4GB를 달아도 소용이 없다는데 왜 그런 것인지 궁금증을 풀어 보자.

윈도에 표시되는 메모리 용량에 대해 알려면 어려운 이론을 이해해야한다. 완벽하게 이해하려면 장치 드라이버 개발자 수준이어야 하지만 여기서는 일반 이용자가 이해할 정도로만 설명한다.

■ 윈도가 쓸 수 있는 최대 메모리는 얼마인가?

윈도는 운영체제로서 클라이언트와 서버로 나눌 수 있는데 각각 최대 메모리 용량이 다르다. 여기에 32비트냐 64비트냐에 따라 달라지기도 한다. 정식으로 출시된 최신 운영체제인 윈도 비스타 얼티밋은 32비트가 4GB, 64비트는 128GB다. 윈도 서버 2008 엔터프라이즈는 32비트가 64GB, 64비트는 2TB다.

바이오스에 표시되는 메모리

PC를 켰을 때 표시되는 POST 화면이나 바이오스(BIOS) 설정 화면에서 시스템에 꽂은 메모리 용량을 확인할 수 있다. 이것을 ‘설치된 실제 메모리’(Installed Physical Memory)의 용량이라고 한다. 이용자가 4GB 램 1개나 2GB 램 2개를 꽂으면 메모리 용량은 4GB(4,096MB)로 표시된다. 바이오스에서 확인한 메모리 용량은 이렇듯 정확하게 표시된다.

4GB가 3.2GB로 둔갑한 이유

4GB로 제한하는 이유는 장치 드라이버 호환성 때문

윈도에 4GB 이상의 메모리를 꽂으면 블루스크린이 뜨거나 시스템이 멈추고, 부팅조차 되지 않는다. 그래픽카드 등의 장치 드라이버를 제대로 읽지 못하는 문제가 발생하기도 한다. 이는 하드웨어 제조사들이 장치 드라이버를 만들 때 메모리가 4GB 이상인 경우를 생각하지 않고 드라이버를 설계한 탓이다. 때문에 MS는 장치 드라이버 호환성을 위해 32비트 윈도 XP와 비스타의 최대 메모리를 4GB로 제한했다.

표. 윈도 XP와 비스타의 최대 메모리 크기.

운영체제

에디션

32비트

64비트

윈도 비스타

얼티밋

4GB

128GB

윈도 비스타

엔터프라이즈

4GB

128GB

윈도 비스타

비즈니스

4GB

128GB

윈도 비스타

홈 프리미엄

4GB

16GB

윈도 비스타

홈 베이직

4GB

8GB

윈도 비스타

스타터

1GB

-

윈도 XP

프로페셔널

4GB

128GB

윈도 XP

스타터

512MB

-

4GB가 3.2GB로 둔갑한 이유

32비트 윈도는 4GB를 다 쓰지 못한다

운영체제가 램을 이용하려면 메인보드가 램에 주소를 붙여서 운영체제에게 알려줘야 한다. 앞서 말한 32비트 윈도가 알아채는 메모리의 용량인 4GB는 물리적인 용량이 아니라 주소로 정해진 용량을 뜻한다. 즉 4GB까지만 주소를 매길 수 있다는 이야기다. 이것을 가상 주소 공간(Virtual Address Space)이라고 한다.

하드웨어 장치가 메모리를 점유한다

PC가 여러 하드웨어 장치를 제어하려면 소프트웨어와 하드웨어를 연결해야 한다. 이를 ‘장치 맵핑’(device mapping)이라고 한다. 장치 맵핑도 메모리를 차지한다. 정확히 말하자면 물리 메모리를 차지하는 것이 아니라 가상 주소 공간을 차지한다는 말이다. 이를 MMIO(메모리 매핑된 I/O)라고도 부른다. PCI 버스, 바이오스, 그래픽카드 등의 MMIO는 가상 주소 공간인 4GB 안에 반드시 들어가야 한다. 물리 메모리가 3GB 이하라면 아무 문제가 없다. 가상 주소 공간 4GB에서 3GB를 할당하고, MMIO는 남는 부분을 쓰면 된다.

하지만 물리 메모리가 4GB가 된다면 문제가 생긴다. MMIO가 가상 주소 공간인 4GB 안에 반드시 포함되어야 하므로 물리 메모리가 할당 받는 가상 주소 공간에 끼어들고 MMIO 크기만큼 실제 메모리는 뒤로 밀려난다. 밀려난 용량은 가상 주소 공간에 포함되지 않으므로 윈도가 인식하지 못한다. 이는 윈도의 문제가 아니라 하드웨어적인 문제다.

예를 들어 256MB 메모리가 달린 그래픽카드라면 4GB의 주소 공간에 그래픽카드에 달린 메모리의 주소를 매핑해야 한다. 이때 매핑된 그래픽 메모리는 시스템 메모리가 쓸 가상 주소 공간을 차지한다. 이렇게 줄어든 시스템 메모리는 하드웨어 장치에 따라 다르다. 하드웨어 장치를 많이 연결하면 MMIO가 더욱 많이 필요해 운영체제가 쓸 수 있는 메모리 용량은 3GB보다 줄어들기도 한다.

윈도에 보이는 메모리 용량

MMIO 때문에 윈도가 쓸 수 있는 메모리가 줄어든다는 것을 알았다. 그렇다면 윈도에는 어떻게 표시될까? 윈도를 켠 상태에서 메모리 용량을 볼 수 있는 곳은 제어판의 [시스템 등록 정보]인데 윈도 XP와 비스타는 이용할 수 있는 메모리(usable memory)만 표시한다. 때문에 4GB가 아니라 3.5GB로 표시된다.

이를 메모리 오류라고 생각하는 유저가 많아서 윈도 비스타 서비스팩 1과 윈도 7에서는 4GB로 표시되도록 수정했다. 바이오스에 표시된 실제 메모리(installed physical memory) 용량 정보를 직접 가져와 표시하는 것이다. 모든 시스템이 이를 정확하게 보고하는 것은 아니고 바이오스에 따라 표시가 되지 않을 수도 있다. 윈도가 쓸 수 있는 메모리는 ‘이용할 수 있는 메모리’(usable memory)로 따로 표시된다.

아래 그림을 보면 윈도 7은 메모리(installed memory)가 4GB, 이용할 수 있는 메모리(usable memory)는 3.75GB로 표시된다. 윈도 XP는 3.75GB로만 표시된다. 즉 윈도 XP와 비스타 7 모두 이용할 수 있는 메모리의 용량은 3.75GB로 똑같다. 메모리의 상태를 정확히 보려면 리소스 모니터의 [메모리 맵]을 보면 알 수 있다.

4GB가 3.2GB로 둔갑한 이유

32비트 윈도 XP와 비스타에서 4GB 이상의 메모리를 쓸 수 있는 방법은 없나?

32비트 윈도 클라이언트(XP, 비스타)는 메모리를 4GB만 쓸 수 있다고 하는데 32비트 이상을 쓸 수 있는 방법은 없는 것인가? ‘없다’가 정답이다. 꼭 4GB 이상의 메모리를 쓰고 싶다면 64비트 운영체제를 써야 한다. 32비트 운영체제를 고집하고 싶다면 클라이언트 운영체제가 아닌 서버 운영체제(윈도 2000 서버, 2003, 2008 등)로 눈을 돌려야 한다.

4GB가 3.2GB로 둔갑한 이유

4GB 제한을 없애는 PAE 옵션?

이론적으로 x86과 x86 64비트 CPU는 4GB 이상의 물리 메모리를 지원한다. CPU 제조사가 물리 메모리 영역을 크게 확장시킬 수 있는 PAE(Physical Address Extension)라는 기술을 포함시켰기 때문이다. 인텔은 펜티엄 프로부터, AMD는 애슬론부터 모두 이 기술을 포함하고 있다. 이 기술을 적용하면 32비트 윈도의 메모리 한계를 최대 64GB까지 확장한다.

하지만 윈도 XP와 비스타처럼 서버가 아닌 클라이언트 운영체제는 PAE를 써도 4GB 이상을 쓸 수 없다. MS가 4GB 이상을 쓰지 못하게 제한했기 때문이다. 그 이유는 앞서 설명한 드라이버 호환성 때문이다. 따라서 아무리 PAE 옵션을 손보더라도 4GB 이상 메모리를 달지 못한다.

4GB가 3.2GB로 둔갑한 이유

윈도에서 그래픽카드가 쓸 수 있는 메모리 용량은?

윈도에서 그래픽카드는 메모리를 어떻게 이용하는지 알아보자. 그래픽 장치는 2가지로 분류된다. 전용 그래픽 메모리(Dedicated graphics memory)를 가지고 있느냐, 공유 시스템 메모리(Shared system memory)를 쓰느냐다. 전용 그래픽 메모리는 그래픽카드만 쓰는 메모리다. 다른 장치는 이 메모리에 접근할 수 없다. 공유 시스템 메모리(Shared system memory)는 필요할 때만 가져다 쓰는 메모리다. 그래픽카드만 쓰는 게 아니라 다른 장치가 가져다 쓸 수 있다. 그래픽카드나 내장 그래픽이라도 시스템 메모리의 일부를 공유 시스템 메모리로 쓴다. 내장 그래픽도 공유 시스템 메모리를 쓰지만, 시스템 메모리 중에 일부를 전용 비디오 메모리도 가져다 쓴다.

4GB가 3.2GB로 둔갑한 이유

그림에서 256MB의 전용 그래픽 메모리를 가진 엔비디아 그래픽카드 8600GT는 256MB의 전용 그래픽 메모리를 가지고 있지만, 공유 시스템 메모리로 1279MB를 쓴다. 따라서 1279MB+256MB = 1535MB로 그래픽카드가 쓸 수 있는 [사용 가능한 총 메모리]가 표시된다.

꼼수를 이용해 4GB 이상의 메모리를 쓴다?

중국의 해커가 32비트 윈도 비스타를 크랙해서 4GB 이상을 쓸 수 있게 만들었다고 한다. 이 방법은 윈도 비스타와 비슷한 커널을 쓰는 윈도 서버 2008의 기능을 옮긴 것이다. 윈도 2008 서버는 64GB까지 지원한다. 이 방법을 쓰면 체험 지수에 오류가 생기고, 정품 인증이 되지 않는 등의 문제가 생긴다고 한다. ■ 메모리를 잘 활용하는 3GB 옵션

3GB 옵션은 응용 프로그램에 더 많은 메모리를 할당하기 위한 기술이다. 32비트 윈도는 앞서 말했듯이 메모리 공간을 4GB만 쓴다. 4GB란 용량은 앞서 말한 것처럼 물리 메모리가 아니라 주소 공간을 뜻한다. 이 4GB의 가상 공간을 2개로 쪼개 2GB는 커널 모드, 나머지 2GB를 유저 모드에 할당한다.

커널 모드에 할당한 공간은 시스템을 이용하는 리소스를 위한 부분이고, 유저 모드는 이용자가 쓰는 응용 프로그램을 위한 공간이다. 3GB 옵션을 쓰면 커널 모드에 1GB를 할당하고 나머지 3GB를 유저 모드에 할당한다. 이렇게 하면 응용 프로그램이 더 많은 메모리를 쓸 수 있다.

3GB 옵션 설정하기

3GB 옵션은 ‘4GT’(4GB RAM Tuning)라는 메모리 조정 기술을 이용해 활성화한다. 이 기술을 쓰려면 윈도 부팅 옵션에 ‘/3GB’라는 명령을 추가한다. 윈도 XP와 비스타, 윈도 7 모두 적용되는 기술이다. 먼저 어떻게 쓰는지 알아보자.

<윈도 XP>

4GB가 3.2GB로 둔갑한 이유
4GB가 3.2GB로 둔갑한 이유
4GB가 3.2GB로 둔갑한 이유
4GB가 3.2GB로 둔갑한 이유

<윈도 비스타>

4GB가 3.2GB로 둔갑한 이유
4GB가 3.2GB로 둔갑한 이유
4GB가 3.2GB로 둔갑한 이유

시스템 리소스가 부족하다면 옵션을 조절하자

시스템 리소스가 많아져서 커널 모드에 할당된 1GB가 꽉 차면 시스템 리소스 부족으로 성능이 떨어질 수 있다. 따라서 무조건 /3GB를 할당하지 말고 자신에 시스템에 맞춰야 한다. 윈도 XP라면 boot.ini 파일에 입력할 내용을 ‘/3GB /usreva=nnnn’로 설정한다. nnnn는 유저 모드로 이용할 공간을 뜻하는데 단위는 MB다.

4GB에서 nnnn을 뺀 나머지 용량이 커널 모드로 할당된다. 예를 들어 커널 모드에 1.5GB를 할당하려면 ‘4096 - 1560 = 2560’이 되므로 ‘/3GB /userva=2560’이라고 입력한다. 윈도 비스타도 마찬가지다. ‘BCDEDIT /SET IncreaseUserVa nnnn’에서 nnnn의 값을 2560으로 바꿔서 입력한다.

윈앤위 winnwe.com

윈도(NT 계열) 운영체제에 대한 여러 가지 콘텐츠를 나누는 공간으로 블로그 주인장은 배우기(Mr.Learn)라는 이름으로 활동한다. 2007 Microsoft MVP User/Shell로 뽑힌 경력이 있다. 윈앤위 블로그는 단순히 지식을 전달하는 게 아니라 함께 공부하는 공간으로 언제든지 블로거들의 참여를 바란다고 한다.

4GB가 3.2GB로 둔갑한 이유
© 2019 nextdaily.co.kr 무단전재 및 재배포금지

(주)넥스트데일리 | 등록번호 : 서울 아 01185 | 등록일 : 2010년 03월 26일 | 제호 : 넥스트데일리 | 발행·편집인 : 구원모
서울시 금천구 가산디지털2로 123, 701호ㅣ발행일자 : 2005년 08월 17일 | 대표전화 : 02-6925-6318 | 청소년보호책임자 : 나성률

Copyright © Nextdaily. All Rights Reserved