사라진 메모리 용량 늘리는 법 - 32비트 운영체계의 한계 -

이문규 munch@itdonga.com

메모리 가격이 저렴해지면서 데스크탑이든 노트북이든 일단 메모리를 대량으로 장착하고 보는 사용자가 많다. 물론 일반적으로 메모리 용량은 많을수록 좋지만 한 가지 따져 봐야 할 점이 있다. 그것은 바로 사용하고 있는 운영체계의 대용량 메모리 지원 가능 여부다.

1124943524-img_0518_chomolanma.jpg
1124943524-img_0518_chomolanma.jpg

윈도우 7이 나온 지 반년 가까이 되어가는 지금까지도 가장 많이 사용하는 운영체계 중 하나인 윈도우 XP는 부팅 후 바탕화면이 나타나는 데까지 약 300MB 남짓의 메모리를 사용한다. 따라서 512MB 메모리의 컴퓨터에서는 느려지는 것이 당연한 것이고, 최소 1GB 이상의 메모리를 달아야 그나마 사용할만하다. 최근에는 2GB, 더 나아가 4GB를 기본으로 장착하는 사용자들도 많이 있는데, 사실 일반용 컴퓨터에서는 4GB 메모리를 100% 활용할 일은 거의 없다(전문 그래픽, 동영상 작업을 주로 사용하는 경우가 아니라면 말이다). 메모리 가격이 저렴하기에 '그냥 장착해뒀다'면 할 말이 없지만, 메모리 용량 2GB 정도면 인터넷 서핑하고, 일반 게임을 즐기며, 문서 작성하고, 음악 듣고, 영화 보고 하는 데는 큰 지장이 없다.

현재의 32비트 윈도우 XP는 최대 4GB까지의 메모리만 인식한다. 즉, 그 이상의 메모리는 달아봤자 사용을 못한다는 의미다. 그럼 4GB까지는 정상적으로 인식해야 한다는 얘긴데, 실제로 4GB를 장착하고 부팅하면 윈도우 XP에서 이를 3.25GB, 혹은 3.50GB로 인식 하는 경우가 있다.

com_mem_chomolanma.jpg
com_mem_chomolanma.jpg

분명히 4GB의 메모리를 장착했는데 3.25GB라고 나온다. 그렇다고 윈도우가 이상한 걸까?

이런 경우 사용자들은 '메모리 불량이 아닌가', '윈도우가 잘못된 것은 아닌가', '시스템에 오류가 있는 것은 아닌가' 하는 등의 반응을 보이는데, 사실 이에 대한 원인은 다음과 같다.

컴퓨터에 장착되는 각종 장치, 예를 들어 그래픽 카드나 랜 카드, 사운드 카드 등이 정상적으로 작동하려면 구동 드라이버가 메모리에 로딩되어야 하는데, 이를 메모리 매핑 (Memory-mapping)이라 하며, 이때 데이터 입출력(I/O)을 위해 MMIO (메모리 매핑 I/O) 영역 을 사용하게 된다.

이 MMIO 영역은 윈도우(32비트)의 최대 인식 메모리인 4GB의 최상위 공간에 위치해야 한다.

아래 그림을 보면,

mem2_chomolanma.jpg
mem2_chomolanma.jpg

(1) 사진에 4GB가 장착되어 있고,

(2) 사진에서 중간에 MMIO 영역이 들어가 있다(이게 각종 장치를 구동하기 위한 영역이다).

즉, 이 때문에 4GB의 나머지 영역, 약 0.5GB가 뒤로 밀려나게 되는데, 애초에 장착된 메모리가 4GB 이하였다면 MMIO 영역이 들어온다고 해도 뒤로 밀려날 메모리가 없기 때문에 윈도우에서 인식하는데 문제가 없지만, 4GB에서는 위와 같은 현상이 발생하는 것이다. 특히, 이때 MMIO는 실제 물리 메모리가 아니므로 운영체계가 사용할 수 있는 물리 메모리 계산에서 이를 제외하게 된다. 그래서 결국 MMIO 영역을 뺀 나머지(ex 4GB-0.5GB=3.5GB)만을 인식하는 것이며, 비디오 메모리가 큰 그래픽카드를 꽂을수록 더 많은 양의 메모리가 줄어든다.

자, 여기까지 읽었다면 혹시 해결할 방법은 없는지 궁금하리라 생각한다. 있긴 있다. 하지만 이 방법은 32비트의 윈도우 XP SP 1 이하에서만 가능하고, SP 2부터는 아쉽지만 이렇다 할 해법이 존재하지 않는다.

윈도우는 부팅할 때 C:\에 있는 boot.ini 파일을 읽어 들이므로 아래와 같이 밀려난 나머지 메모리를 윈도우에서 인식하도록 명령을 내려주면 된다(boot.ini 파일에는 윈도우 부팅에 적용되는 파티션과 부팅 정보가 담겨있다).

pae_chomolanma.jpg
pae_chomolanma.jpg

방법은 간단하다. 위 그림과 같이 메모장으로 열어서 '/PAE' 옵션을 넣어주면 된다. PAE란 'Physical Address Extension'의 약자로 우리말로 하면 '물리적 주소의 확장'쯤이 되겠다. 이 옵션을 통해 4GB 메모리를 정확하게 인식시켜줄 수 있다(다시 한 번 말하지만 윈도우 XP SP 1에서만 된다).

참고로 윈도우 각 버전에 따른 메모리 지원 용량은 아래 표와 같다.

Untitled-1.jpg
Untitled-1.jpg

원래 32비트 운영체계에서는 2의 32승인 4,294,967,296비트, 즉 4.29GB의 메모리까지만 지원되는 게 맞지만, PAE를 사용함으로써 32비트에서 36비트까지 늘릴 수 있다. 그러므로 총 사용 가능한 메모리는 4GB에서 2의 4승이 늘어난 68,719,476,736비트, 즉 64GB가 되는 것이다. 그래서 위 표에서 Windows Server 일부 제품이 (32비트지만) 64GB 메모리를 지원할 수 있다.

사실 메모리가 사라지는 현상을 해결하는 근본적인 방법은 64비트 운영체계를 설치하는 것이다. 윈도우 XP와 윈도우 비스타, 윈도우 7에는 64비트 버전도 있는데 이를 설치하면 4GB 이상의 메모리를 마음대로 사용할 수 있다. 다만, 64비트 버전 윈도우는 32비트 윈도우에 비해 성능은 높지만 호환성이 떨어지므로, 기존에 사용하던 32비트용 소프트웨어나 하드웨어를 사용하지 못하게 되는 일이 있을 수 있다. 하지만 차후 대세가 될 것으로 보이는 64비트 컴퓨팅을 한 발 앞서 경험해보고자 하는 사용자라면 한 번 도전해볼 만하다.

글 / IT동아 이문규(munch@itdonga.com)

IT동아의 모든 콘텐츠(기사)는 Creative commons 저작자표시-비영리-변경금지 라이선스에 따라 이용할 수 있습니다.
의견은 IT동아(게임동아) 페이스북에서 덧글 또는 메신저로 남겨주세요.