운영체제(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로 제한하는 이유는 장치 드라이버 호환성 때문
윈도에 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 | - |
![]()
|
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로 똑같다. 메모리의 상태를 정확히 보려면 리소스 모니터의 [메모리 맵]을 보면 알 수 있다.
![]() |
윈도 7의 리소스 모니터에서 추가된 [메모리 맵]. |
32비트 윈도 XP와 비스타에서 4GB 이상의 메모리를 쓸 수 있는 방법은 없나?
32비트 윈도 클라이언트(XP, 비스타)는 메모리를 4GB만 쓸 수 있다고 하는데 32비트 이상을 쓸 수 있는 방법은 없는 것인가? ‘없다’가 정답이다. 꼭 4GB 이상의 메모리를 쓰고 싶다면 64비트 운영체제를 써야 한다. 32비트 운영체제를 고집하고 싶다면 클라이언트 운영체제가 아닌 서버 운영체제(윈도 2000 서버, 2003, 2008 등)로 눈을 돌려야 한다.
![]() |
메모리를 4GB 이상 쓰려면 서버 운영체제를 써야 한다. |
4GB 제한을 없애는 PAE 옵션?
이론적으로 x86과 x86 64비트 CPU는 4GB 이상의 물리 메모리를 지원한다. CPU 제조사가 물리 메모리 영역을 크게 확장시킬 수 있는 PAE(Physical Address Extension)라는 기술을 포함시켰기 때문이다. 인텔은 펜티엄 프로부터, AMD는 애슬론부터 모두 이 기술을 포함하고 있다. 이 기술을 적용하면 32비트 윈도의 메모리 한계를 최대 64GB까지 확장한다.
하지만 윈도 XP와 비스타처럼 서버가 아닌 클라이언트 운영체제는 PAE를 써도 4GB 이상을 쓸 수 없다. MS가 4GB 이상을 쓰지 못하게 제한했기 때문이다. 그 이유는 앞서 설명한 드라이버 호환성 때문이다. 따라서 아무리 PAE 옵션을 손보더라도 4GB 이상 메모리를 달지 못한다.
![]() |
윈도 XP의 boot.ini에 추가한 ‘PAE’ 옵션. |
윈도에서 그래픽카드가 쓸 수 있는 메모리 용량은?
그림에서 256MB의 전용 그래픽 메모리를 가진 엔비디아 그래픽카드 8600GT는 256MB의 전용 그래픽 메모리를 가지고 있지만, 공유 시스템 메모리로 1279MB를 쓴다. 따라서 1279MB+256MB = 1535MB로 그래픽카드가 쓸 수 있는 [사용 가능한 총 메모리]가 표시된다. |
꼼수를 이용해 4GB 이상의 메모리를 쓴다? 중국의 해커가 32비트 윈도 비스타를 크랙해서 4GB 이상을 쓸 수 있게 만들었다고 한다. 이 방법은 윈도 비스타와 비슷한 커널을 쓰는 윈도 서버 2008의 기능을 옮긴 것이다. 윈도 2008 서버는 64GB까지 지원한다. 이 방법을 쓰면 체험 지수에 오류가 생기고, 정품 인증이 되지 않는 등의 문제가 생긴다고 한다. |
3GB 옵션은 응용 프로그램에 더 많은 메모리를 할당하기 위한 기술이다. 32비트 윈도는 앞서 말했듯이 메모리 공간을 4GB만 쓴다. 4GB란 용량은 앞서 말한 것처럼 물리 메모리가 아니라 주소 공간을 뜻한다. 이 4GB의 가상 공간을 2개로 쪼개 2GB는 커널 모드, 나머지 2GB를 유저 모드에 할당한다.
커널 모드에 할당한 공간은 시스템을 이용하는 리소스를 위한 부분이고, 유저 모드는 이용자가 쓰는 응용 프로그램을 위한 공간이다. 3GB 옵션을 쓰면 커널 모드에 1GB를 할당하고 나머지 3GB를 유저 모드에 할당한다. 이렇게 하면 응용 프로그램이 더 많은 메모리를 쓸 수 있다.
3GB 옵션 설정하기
3GB 옵션은 ‘4GT’(4GB RAM Tuning)라는 메모리 조정 기술을 이용해 활성화한다. 이 기술을 쓰려면 윈도 부팅 옵션에 ‘/3GB’라는 명령을 추가한다. 윈도 XP와 비스타, 윈도 7 모두 적용되는 기술이다. 먼저 어떻게 쓰는지 알아보자.
<윈도 XP>
![]() |
① [내 컴퓨터]를 오른쪽 클릭해 [속성]을 누른다. |
![]() |
② [고급] 탭에서 [시작 및 복구]의 [설정]을 누른다. |
![]() |
③ [시작 및 복구] 창에서 [시스템 시작]의 [편집]을 누른다. |
![]() |
④ Boot.ini 파일이 메모장으로 열리면 그림처럼 ‘/3GB’를 입력하고 메모장을 닫고 윈도를 재부팅한다. |
<윈도 비스타>
![]() |
① 시작 → cmd라고 입력해서 명령행 창을 연다. |
![]() |
② 다음 명령어를 하나씩 입력한다. BCDEDIT /SET PAE ForceEnable BCDEDIT /SET IncreaseUserVa 3072 |
![]() |
③ 원래 값으로 되돌리려면 다음을 입력한다. BCDEDIT /SET IncreaseUserVa 2048 |
시스템 리소스가 부족하다면 옵션을 조절하자
시스템 리소스가 많아져서 커널 모드에 할당된 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로 뽑힌 경력이 있다. 윈앤위 블로그는 단순히 지식을 전달하는 게 아니라 함께 공부하는 공간으로 언제든지 블로거들의 참여를 바란다고 한다.
|
윤재필 월간 피씨사랑 기자 | 2009-06-24 |
더 보기http://www.ebuzz.co.kr/content/buzz_view.html?ps_ccid=80663#ixzz11ki91CSi
'IT 이야기' 카테고리의 다른 글
윈도우 7 USB 설치하기 (0) | 2010.10.24 |
---|---|
WOL - 원격접속, 부팅 (0) | 2010.10.08 |
4GB 제한의 진실, 32비트 Windows (XP, Vista, 7)클라이언트 (0) | 2010.10.08 |
window xp32 bit 는 인식용량이 4G ? (0) | 2010.10.08 |
Window 32,64bit 구별법 (0) | 2010.10.08 |