우리 사용자들이 메모리 용량을 확인할 때 흔히 사용하는 것이 Windows 작업관리자입니다. 또 다른 GUI로는 실행 상자에서 msinfo32를 실행해서 시스템 요약으로 확인이 가능합니다. 제 경우는 주로 systeminfo | more를 활용합니다. 그런데 과연 이것으로 Windows의 가상 주소 공간을 확인할 수 있을까요? 애석하게도 확인이 불가능합니다. 우선 이미 잘 알려진 4기가 바이트 램 튜닝에서 스위치 /3GB를 주게 되면 가상 주소 공간의 기본 레이아웃이 커널 모드 2GB + 유저 모드 2GB = 4GB 가상 주소 공간이 커널 모드 1GB + 유저 모드 3GB로 조정이 되어서 기존 보다 1GB 많은 공간을 어플리케이션이 사용 가능하지만, 이것을 msinfo32로 확인할 수는 없습니다. 확인한다고 데이타를 제시하는 사람도 실제로 있지만.^^ 단순하게 Windows가 보고하는 메묘리 용량일 뿐이지 가상 주소 공간과는 무관합니다. 단, 작업 관리자의 프르세스를 통해서 각 프로세스가 얼마의 메모리 용량을 사용하는지 파악은 가능합니다. 그렇지만 이 역시 4GT가 적용이 되어서 실제 메모리 튜닝이 일어났지는 파악하기가 불가능 합니다. 그렇다면 가상 주소 공간을 무엇으로 확인을 해야 할까요? 바로 가상 메모리 맵 뷰어라는 프로그램(Virtual Memory Map Viewer)입니다. 누구라도 다운이 가능하도록 무료로 제공이 가능하지만, 일반 사용자들 보다는 주로 개발자들이 사용하는 도구입니다. 일단 4GT를 통해서 Windows 7의 실행 결과를 살펴 보겠습니다.
상단 이미지의 왼쪽은 왼쪽 4GT가 적용된 상태이고, 오른쪽은 4GT가 적용되지 않은 상태로 캡처한 이미지입니다. 그리고 X표가 있는 영역은 msinfo32.exe라는 시스템 정보 도구입니다. 4GT가 적용이 되던지 안되던지 변화가 거의 없습니다. 그러나 가상 메모리 맵 뷰어의 프라이빗(private)에는 기존에 볼 수 없었던 대략 1GB의 용량이 늘어난 것을 확인할 수 있습니다. 이 프라이빗은 작업 관리자에서는 개인 메모리(집합)이라고 하며, 프로세스가 단독으로 할당 받아 사용하는 메모리입니다. 실제 메모리(램)가 4GB 또는 1GB라고 해도 4GT를 적용하면 프라이빗 메모리가 1GB 정도 늘어나게 됩니다. 따라서 사용자들은 프로세스가 단독으로 사용할 수 있다는 이 프라이빗의 용량이 1GB가 증가함으로써 유저 모드가 2GB에서 3GB로 늘었다는 실체를 확인을 할 수 있습니다. 그렇지만 또 여기서 끝나는 것이 아니지요. 응용 프로그램이 Large Address Aware라고 인식을 시켜야 최대 3GB의 메모리까지 사용이 가능하게 됩니다. 이렇게 4GT라는 것도 복잡합니다.
다음은 PAE라는 실제 확장 주소인데요. 배우기(Mr.Learn)가 이 PAE도 메모리 튜닝으로 실제 4GB의 램에서 커널 모드 1GB + 유저 모드 3GB로 조정이 된다라고 주장을 합니다. 그런데 이것을 검증한 바는 없습니다.^^ 물론 MS기술 문서 모두를 섭렵했다라고 할 수 없지만, 어쨋거나 PAE가 메모리 튜닝이라고 설명한 글도 없습니다. 그리고 이것이 최근 짜증 대박을 내었습니다. 어떤 방문자가 PAE는 가상 주소와 는 하등의 관계가 없다고 하더군요. 그렇다면 PAE를 사용하면 프로그램이 직접 램속으로 들어가서 바로 실행이 되는지 모르겟습니다.^^ 4GT나 PAE나 모두 가상 주소를 통해서 실제 메모리가 접근을 하지만, PAE의 특징은 오로지 실제 메모리만을 사용한다는 것입니다. 물론 가상 주소 맵핑을 통해서 실제 메모리에 접근하지만, 실제로 4GB 이상을 넘어서는 것이 4GT와는 분명하게 구분이 되고 Large Address Aware가 아닌 AWE API가 사용되어야 한다는 것입니다. 그러나 이 PAE도 가상 주소를 32비트에서 36비트로 재지정하는 변환과정이 필요합니다.
당연히 배우기(Mr.Learn)가 Windows에 호기심이 많기 때문에 과연 PAE 커널이 로드가 되면 어떤 변화가 일어나는지 궁금 합니다만 아직 까지는 뭔가를 발견할 것이 없습니다. 단지 커널만 올려져고 기존의 구동 메커니즘에는 아무런 변화를 느끼지 못합니다만, 마찬가지로 msinfo32로 확인이 불가능합니다. 그런데 이와 관련해서 재미있는 생각을 했습니다.
1, 가상 주소 공간의 변화가 없다라고 가정을 해서 ...
변화가 없다면 커널 2GB + 유저 2GB가 그대로 유지가 되는데, 마이크로소프트는 왜 Maximum memory support with PAE, 4GB라고 하면서 4GB라는 표기를 하는가? 물론 PAE를 제외하고도 32비트에서는 당연히 4GB 밖에사용되지 않기 때문에 한도 4GB인 것은 당연하고 기존의 가상 주소 공간을 유지하는데, XP에서 굳이 4GB로 제한을 하면서 PAE를 지원할 필요는 없다는 생각입니다.
2. PAE가 AWE API와 함께 사용되면 커널 공간을 밀어 버릴까?
AWE API가 어떤 놈인지 모르겟습니다만, API라는 인터페이스가 사용되면 기존의 가상 주소 공간의 커널 모드 2GB를 1GB로 밀어 버리고 작동한다는 것은 전혀 아닌 듯 한데, 굳이 AWE API를 4GB에서 지원할 필요가 있을까라는 생각이 듭니다. 그것이 아니라면 PAE 커널이 올라오면서 커널 모드 1GB + 유저 모드 3GB라는 변화를 준다고 봐야하는데, 이러한 가상 주소 공간의 변화를 찾는 것이 쉽지가 않습니다.(msinfo32로 확인은 역시 불가능)
3. AWE API와 단지 Large Address Aware의 차이일까?
뮬론 PAE + AWE가 적용이 되어야 4GB 이상을 사용할 수 있습니다만, Maximum memory support with PAE, 4GB인 상태에서는 결국 AWE API와 Large Address Aware라는 차이 밖에 나지 않습니다. 따라서 PAE커널을 올리고 API차원에서 지원을 하느냐 아니면, 기존 커널 차원에서 이미 프라이빗(private) 메모리를 확보해서 단순하게 Large Address Aware만으로 가능하느냐라는 차이가 납니다.
결국은 고민끝에 Windows 사용자로써 생각한 것이 PAE도 가상 주소 공간의 확인은 어렵지만 커널 1GB + 3GB로 조정이 된다라는 생각을 가지게 된 것입니다. 그리고 아래 처럼 [PAE(실제 주소 확장) x86 및 응용 프로그램 메모리 조정]라는 마이크로소프트 설명을 보니까 이것이 4GT와 혼란스럽던데, 문장을 잘 파악해 보면 4GT를 뜬금없이 연관을 시킨다는 것이 문장 흐름상 맞지는 않고, API가 직접 가상 주소 공간의 레이아웃을 바꾼다는 것도 그렇고 결국 PAE가 활성화되어 메모리 튜닝이 되는 쪽으로 생각하게 됩니다. 4GT라고 박박 우기는 사람도 있지만 ...
PAE(실제 주소 확장) x86 및 응용 프로그램 메모리 조정
PAE(실제 주소 확장) X86 및 4GT(4GB 조정)라고도 하는 응용 프로그램 메모리 조정 기능은 Intel 프로세서를 사용하는 컴퓨터를 위한 보조 기술입니다.
응용 프로그램 메모리 조정 기능은 운영 체제에의 가상 메모리 사용을 줄임으로써 응용 프로그램이 좀 더 많은 가상 메모리를 사용할 수 있도록 합니다. PAE X86은 Intel Pentium Pro 프로세서 이상 및 Windows Server 2003, Enterprise Edition 또는 Windows Server 2003, Datacenter Edition이 설치된 컴퓨터에서 실행되는 AWE(Address Windowing Extensions) API 집합을 사용하는 소프트웨어가 응용 프로그램의 가상 주소 공간에 보다 많은 실제 메모리를 매핑할 수 있도록 합니다.
예를 들어 컴퓨터에 Pentium Pro 프로세서 이상 및 16GB의 실제 메모리(응용 프로그램 조정 기능이 지원하는 최대 양)가 있으면 응용 프로그램 메모리 조정 기능을 사용하여 3GB의 가상 메모리를 응용 프로그램에 할당할 수 있습니다(1GB는 운영 체제용). 이렇게 하면 지정된 응용 프로그램은 해당 실제 메모리를 잠글 수 있습니다. 응용 프로그램은 AWE API 집합 및 PAE X86 커널을 사용하여 나머지 12GB의 실제 메모리를 캐싱에 사용할 수 있습니다. 결과적으로 응용 프로그램은 최대 15GB의 실제 메모리에 액세스할 수 있습니다.
게으르즘과 귀차지즘에 뭐 눈도 아프고 실제로 ... MS 기술 문서라는 것이 쉽지도 않고 ... ^^
옆집 개똥아빠 보면 꼭 자기말만 옳다고 하고 상대방 말은 전혀 귀담아 듣지를 않는데, 온라인 상에서도 그런 것을 느끼니까 아주 짜증 대박이더구먼요. 윈앤위에 제발 좀 그런 사람 안왔으면 좋겠습니다.(그런 의미로 최근 ㅉㅈ성 코멘트 삭제, 꼭 블로그 주소 없는 고상한 닉네임 사용자들의 소행 ...)
무식한 것인지 용감한 것인지, 네이버 상습 펌질 및 양심불량 블로그(
blog.naver.com/spef)는 윈앤위 게시물 모두 삭제하십시오!
개인 운영 사이트라고 만만하게 생각하고 콘텐츠 복제하나본데 그러다가 큰코 다칩니다.
저작권자 동의없이 콘텐츠 복제를 금합니다. 동의를 거쳐서
이용 규칙을 준수하십시오!
작성날짜 : 2009년 10월 29일
작성시간 : AM 05시 12분 57초
퍼브리셔 :
배우기(Mr.Learn)
저작권자 : Powered by 윈앤위
코멘트는 누구에게나 열려 있습니다.
트랙백도 블로거에게 열려 있습니다.