Windows와 관련된 국내 커뮤니티들은 소프트웨어 보다는 하드웨어 쪽으로 많이 치우쳐 있어 보입니다. 또 하드웨어 동호회 글들을 보면 제가 가진 PC 지식으로는 주로 전자공학쪽 지식으로 접근하시는 분들이 많다는 생각입니다. PC 하드웨어쪽으로는 유용한 글들이 많아 보입니다만, Windows 메커니즘의 경우는 오해하고 있는 경우를 종종 볼 수 있습니다. 배우기(Mr.Learn) 생각으로는 PC를 마이크로프로세서(마이크로컴퓨터) 처럼 단순히 CPU, RAM, I/O로 보고 실제 메모리(램)를 테크니컬 포인트로 생각하는 경향이 있지 않은가 합니다. 만약 배우기(Mr.Learn) 생각이 옳다면 가상 메모리(가상 주고 공간)와 실제 메모리를 혼동할 수 있고, 그렇게되면 Windows 메커니즘에 접근하는 것도 역시 혼란스러울지 모릅니다. Windows 메커니즘을 제대로 파악을 하려면 실제 메모리가 아닌 가상 메모리(가상 주소 공간)를 테크니컬 포인트로 해야 합니다.
배우기(Mr.Learn) 한테 들이 대시는 분들도 대부분 MMIO(Memomy Mapped I/O)를 말씀하시면서 빈 영역이 있어 활용 가능하다 하는데, 그렇기 때문에 램디스크 활용문제도 나오지요. 램디스크는 이미 마이크로소프트에서도 Windows 2k 이후에는 제공을 하지 않습니다. 마이크로소프트 기술 자료
257405에도 “일반적으로 Ramdisk보다 Windows(r) 2000 캐시 관리자가 메모리를 훨씬 효과적으로 최적화합니다.”라고 나옵니다. XP를 거쳐서 Vista, 그리고 이제 Windows 7까지 왔는데, 특별한 경우가 아니라면, 시스템 램을 잘라내서 사용하는 것은 오히려 Windows의 자체 캐시 성능을 떨어뜨리고 전체적인 밸런스를 깨뜨리는 결과를 초래할 것입니다.
지난 번 웹로그에서는 Vista부터 도입된 WDDM(디스플레이 드라이버 모델) 기술을 이해하면서 Windows 사용자들이 오해하기 쉬운 문제를
4GB 메모리에 대한 기술적인 점검으로 오해를 풀어 봅시다.(1/2)로 다루어 보았습니다. 읽어 보시면 아마도 배우기(Mr.Learn)라는 사람이 다룬 웹로그가 오히려 사용자 관점에서 더욱 친근감이 있지 않을까 생각합니다. 오해가 풀렸으면 좋겠습니다. 이 번 웹로그도 메모리에 관한 것인데요. 어떻게 하면 Windows 일반 사용자님들도 쉽게 이해할 수 있을까 많은 고민을 하면서 포토샵으로 그림을 그렸습니다. 그림을 그리는데 시간이 많이 걸리지만, 긴 설명 보다는 그림으로 그려서 보여드리는 것이 가장 효과적인 듯 하다고 판단을 했습니다. 본론으로 들어가기 전에 가상 주소 공간과 실제 메모리를 절대 혼동하시면 안되므로 혹시라도 아직 개념 정립이 안되었다면 먼저,
32비트에서 4GB 가상 주소 공간과 실제 메모리에 대한 이해를 읽어 보시길 권장합니다. 자 그럼 우선 데이타 실행 방지라는 기능에 대해 먼저 알아보겠습니다.
1. 데이타 실행 방지(Data Execution Prevention)
우리 사용자들이 프로그램을 실행시키면 프로그램(프로세스)은 커널 모드 2G + 유저 모드 2G = 4GB라는 가상 주소 공간을 가지게 됩니다. 램을 512MB를 장착을 했고, 1GB 또는 2GB, 4GB라도 마찬가지로 x86(32비트) 시스템에서는 4GB의 가상 주소 공간을 가집니다. 그리고 프로그램은 유저 모드 2GB의 공간에 자리하게 되는데요. 프로그램이 작동되어 실행될 때는 유저 모드에서 크게 두 개의 영역으로 분리되어 코드 영역과 데이타 영역으로 나뉘어 실행됩니다. 여기서 코드는 프로그램 작동 알고리즘(algorithm)이고, 데이타는 코드 영역에서 필요로 하는 데이타(data)입니다.
1-1. 악성 코드에 감염되지 않은 정상적인 프로그램이라면 코드 영역에서 작동되면서 데이타 영역에서 필요한 데이타를 가져옵니다.
1-2. 그러나 악성 코드에 감염이 되면, 코드 영역에서 점프를 해서 데이타 영역으로 이동 사용자가 원하지 않는 악성 코드를 실행하게 되는데요. 이것이 바로 악성코드 감염으로 인한 문제를 일으키게 됩니다. 즉, 비정상적으로 데이타 영역에서 악성 코드가 실행이 될 수 있기 때문에 이것을 방지하고자 하는 것이 바로 데이타 실행 방지(DEP, Data Execution Prevention) 기능 또는 향상된 바이러스 보호(EVP, Enhanced Virus Protection)입니다. 좀 더 자세하게 아시려면 이미 배우기(Mr.Learn)가 작성한
데이타 실행 방지(DEP)의 이해와 정책 설정을 추천합니다.
배우기의 변명 1 : 막연하게 대충 알고 있는 것과 기술적인 내용을 머리에서 완전히 정립시킨 후에 웹로그로 작성하는 것은 배우기(Mr.Learn)도 상당히 어렵습니다. 특히 하나의 기술이 아닌 여러가지가 혼합된 경우는 관련 기술들 모두 정확하게 이해를 해야하는데요. Windows와 관련 MS의 기술 문서는 엄청나게 방대하고, 구 Windows와 신 Windows의 차이와 각 에디션별 특징 그리고 새로운 Windows와 서비스팩이 출시되면서 기술적으로 바뀌는 것들까지 포함을 하면 배우기(Mr.Learn) 머리가 깨질 지경입니다. x86 Windows 클라이언트라고 해도 서버 못지 않게 어렵습니다. 또 기술적인 사항을 한번 읽어서 모두 소화할 정도라면 괜찮은데, 몇 번을 읽어도 어려운 것도 있습니다. 머리를 테이프로 칭칭 감아 매어도 중간에 까먹기도 한답니다.^^
2. 실제 주소 확장 (PAE, Phsical Address Extension)이 적용되는 기술
Windows의 가상 주소 공간의 기본 레이아웃은 커널 모드 2GB + 유저 모드 2GB입니다. 이 기본 레이아웃의 가상 주소 공간을 하드 코어(hard core)라고 한다면 이것을 소프트 코어(soft core)로 만들어 줄 수 있는데요. 그것이 바로 실제 주소 확장이라는 PAE 기술입니다. 하드 코어하니까 뭔가를 떠올리시는 분이 있을지 모르지만, 여기서는 제가 딱딱한 것을 유들유들 부드럽게 한다는 의미(flexible)이지 그것(?)을 상상을 하시면 절대 안됩니다.^^ 그런 의미로 제가 가상 주소 공간의 테두리 색상을 변경을 했는데요. PAE라는
실제 주소 확장은 기존의 유저 모드에서 사용할 수 있는 2GB의 메모리 주소를 좀 더 확장시켜서 Windows의 퍼포먼스를 증가시키는 목적을 가진 스케일 업(scale up) 기술입니다. 그런데 이 기술은 기본적으로 활성상태로 놓여있습니다. 왜냐하면 Windows XP의 서비스팩 2가 출시되면서 DEP라는 데이타 영역을 보호하는 기술이 나오게 되는데, 위에서도 설명을 했지만 이것이 바로
데이타 실행 방지 기술입니다. 그런데 데이타 영역은 고정되지 않고 유동적으로 변화할 수 있으므로 가상 주소 공간도 이에 따라서 융통성 있게 변화(scale flexibly)를 해야 합니다. 2^32 = 4GB를 넘어서려면 32비트가 아닌 36비트 주소도 만들어야 하므로 주소 재지정이라는 주소 변환 기술이 필요하며, 변환을 통해서 실제 메모리에 접근을 하게 됩니다. 그래서 DEP도 기본적으로 PAE라는 기술이 요구됩니다.
2-1. 이미 우리 Windows 사용자들은 PAE + DEP가 접목된 기술을 사용하고 있습니다만, 이러한 사실을 대부분 간과하고 있는 셈이지요. 물론 배우기(Mr.Learn)도 혼란을 느낀 것이 사실입니다. 본 웹로그를 작성하기 위해서 어제, 오늘 기술적인 사항들을 재검토 하면서 다시끔 머리에 재정립하는 기회가 되었군요.
2-2. DEP도 4GB 이상을 초과하는 영역에서 데이타 영역을 보호해야 하므로 당연히 PAE 기술이 전제가 되지만, 4GB로 한정시킬 경우, 기존의 유저 모드 2GB는 변동이 일어나지 않습니다. 어플리케이션 메모리 튜닝(응용 프로그램 조정)도 마찬가지로 PAE가 활성된 상태여야만 가능하기 때문에 AWE 기술을 맞이할 준비가 되어 있는 셈입니다. 그러나 AWE용으로 개발된 어플리케이션이 아니라면 실질적으로는 PAE + AWE라는 것은 효과가 없어 무용지물인 셈이지요. AWE는 PAE를 전제로 유저 모드에서 직접 동적 확장되는 바이패싱(bypassing) 기술을 사용합니다. 우회나 보조적으로 사용된다고 보시면 됩니다. 한도 4GB, 유저 모드가 2GB인 상태에서 최대 1GB를 준비해 놓은 상태라고 할 수 있습니다. 그래서
XP에서 Maximum memory support with PAE, 4GB라는 것은 PAE가 적용되면서 물리적인 메모리(실제 메모리)로써 한도라는 것을 의미합니다. 그래서 우리 사용자들은 이미 PAE + DEP가 적용된 상태로 이미 4GB가 최대 사용할 수 있는 메모리 용량을 사용하고 있는 셈입니다.
Windows 클라이언트의 경우 PAE + DEP는 이미 기본적으로 작동이 되는 상태에서 4GB까지 실제 메모리 사용이 가능하지만, 4GB이상의 실제 메모리를 사용하기 위한 방법(비공식적인 편법)으로 DEP를 AlwaysOff시켜 버리고 PAE를 강제 활성시키므로써 4GB이상의 메모리를 사용할 수 있도록 한다는 것이지요.(물론 아직까지 이 부분은 Windows XP에서 배우기(Mr.Learn)가 검증한 바가 없습니다. 그러나 Usage를 소개한 것은 사실입니다. 공식적으로 MS는 적용되지 않는다라는 것입니다만, 유저들간에는 가타부타 논쟁도 있고요. 어떤 하드웨어(G31 보드)에서는 가능하다라는 주장도 보입니다만, 이러한 문제에 대해서 제가 모든 하드웨어들을 파악할 수 없습니다. 단지, 4GB 밖에 지원하지 않는 x86보다는 대용량의 메모리를 필요로 하는 서버 전용 보드가 가능하지 않느냐라고 Usage를 소개할 때 첨부를 했지요. 이러한 것은 저한테 들이대고 묻는다면 제입장에서는 상당히 곤란한 문제입니다.
공식적으로 지원하지 않습니다. 또
AWE API 적용과 커널 해킹 역시 아직 시도는 해보지 않았습니다. (Usage가 이런 것이 있다에서 만족하시고 배우기(Mr.Learn) 한테 들이 대지 않았으면 좋겠습니다. 아니면 테스트 하도록 지구상에 모든 메인 보드들을 저한테 사주시건가 ... ^^,
적용이 되는지 안되는지는 각 사용자님들에게 맡깁니다.)
배우기의 변명 2 : PAE를 놓고 딴지를 거신 분이 있었는데요. PAE 기술을 단독으로 떼어 놓는다면 메모리 튜닝 기술이라고 하기에는 무리가 있습니다. 더욱이 배우기(Mr.Learn)가 선을 딱 그어서 커널 모드는 1GB는 유저모드는 3GB라고 했는데, 만약 기술 세미나에서 이런 설명을 했다면 배우기(Mr.Learn)는 바보가 되는 것입니다. 4GB라는 제한된 영역에서는 추가적으로 1GB라는 공간을 AWE가 사용될 수 있도록 PAE가 환경을 조성(scale flexibly) 하다라는 설명을 했다면 괜찮은데, 4GT 기술과 PAE를 메모리 튜닝 모델이라고 한 것은 어플리케이션 메모리 튜닝을 포함으로 해서 Windows 사용자 관점에서 취급했다라고 너그럽게 봐 주시기 바랍니다. 딴지를 거신 분과 함께 좋은 방향으로 의견교환을 하기를 바랬는데, 아예 가상 주소 공간 자체를 부정하면서 저를 몹시 불쾌하게 했기 때문에 불미스러운 일이 발생했습니다. 이 점 다시 한번 방문자님이나 윈앤위 멤버님께 사과드립니다.
*** 위의 변명 2가지는 배우기(Mr.Learn)라는 사람의 그릇이 작아서 그리고 실력이 부족한 탓에 발생한 것이므로 비난 받을 일이었다면 감수하겠습니다.
윈앤위의 멤버 한 분께서 가끔 그런 말씀을 하시더군요.
윈앤위가 좀 유명해진 것 같다라고 말입니다. 사실 배우기(Mr.Learn)는 유명한지 아닌지 알 수 없습니다. 늘상 Windows를 사용하는 시간이 많고, 그렇기 때문에 Windows를 좀 더 많이 알아보자라는 것이지요. 그런데 솔직히 말씀드려 한편으로는 뭔가 꿈틀거리는 것이 있더군요. 이왕 시작한 것 세계의 내놓으라는 커뮤니티들과 어깨를 나란히 할 정도의 커뮤니티를 만들어 보자!
배우기(Mr.Learn)는 친MS도 반MS도 아닙니다. 욕할 것은 욕하고 칭찬할 것은 칭찬하자. 그렇지만 Windows라는 것을 잘아야 가능한 일이기 때문에 나름대로는 최선을 다하고 있습니다. 그렇다 보니 윈앤위의 콘텐츠의 양이 컴퓨터 서적 몇 권 정도가 되는 듯 합니다. 많은 시간 Windows를 접하다 보니 과거에 잘못 알던 지식들도 새롭게 다시 알게 경우도 있습니다. 배우기(Mr.Learn) 보다 잘 아시는 분이라면 항상 기술적으로 충분한 설명을 하신다면 좋겠습니다. 요 며칠 동안에 존칭을 사용하다 보니 오히려 존칭을 사용하는 것이 편해진 듯 한데요. 배우기(Mr.Learn)는 블로그를 웹상의 기록이라고 생각하고 있습니다. 혼자서 Windows에 관한 내용을 기록하는데 자기 자신에게 존칭을 쓰지는 않지요. 존칭을 사용하면 또 대상이 있어야 하는데, 제가 존칭을 사용하면 가르치는 듯 한 착각에 빠질 수 있을 것입니다. 배우기(Mr.Learn)는 아직 Windows를 누구에게 가르칠 정도의 수준에 있는 사람은 아닙니다. 사용자로써 경험을 공유할 뿐입니다.
Windows 7의 케치플레이즈가
사용자를 위한, 사용자에 의한 것이라고 하는데, 윈앤위 콘텐츠 역시
사용자에 의한, 사용자를 위한 콘텐츠라고 할 수 있습니다. 제가 가장 납득하기 어려운 것은 제가 작성한 글이 문제나 의문 점이 있는 경우를 대비해 충분한 피드백 장치를 준비해 놓았는데, 왜 배우기(Mr.Learn)의 글이 다른 커뮤니티에서 평가 되어야 하는지 의문입니다. 직접 당근도 주시고 채찍질도 하시길 부탁드리겠습니다.
나름대로는
4GB 메모리에 대한 기술적인 점검으로 오해를 풀어 봅시다라는 제목으로 1회, 2회 연속 웹로그를 작성을 했습니다. Windows 사용자들 사이에서는 항상 이슈가 되는 문제인데요. 모쪼록 오해가 풀렸으면 하는 바램입니다.
감사합니다!
무식한 것인지 용감한 것인지, 네이버 상습 펌질 및 양심불량 블로그(
blog.naver.com/spef)는 윈앤위 게시물 모두 삭제하십시오!
개인 운영 사이트라고 만만하게 생각하고 콘텐츠 복제하나본데 그러다가 큰코 다칩니다.
저작권자 동의없이 콘텐츠 복제를 금합니다. 동의를 거쳐서
이용 규칙을 준수하십시오!
작성날짜 : 2009년 11월 01일
작성시간 : PM 04시 34분 59초
퍼브리셔 :
배우기(Mr.Learn)
저작권자 : Powered by 윈앤위
코멘트는 누구에게나 열려 있습니다.
트랙백도 블로거에게 열려 있습니다.