본문 바로가기

카테고리 없음

Windows Memory Option 파해치기

Windows 튜닝에 대한 글을 정리하다가 Memory구조에 대해 알 필요가 있다는 생각이 마구마구 든다. 그러나 Windows Internals에 있는 Memory관련 내용들~~ 특히 7장에 대한 내용을 다루어 볼려고 한다.

● PTE (Page-Table-Entries)

clip_image001

PTE는 Memory Manager에서 관리하는 일종의 Object로 VAD에 있는 Mapping정보를 읽어와서 Physical Memory 주소와 Mapping하는 역활을 담당한다. 이 공간은 32Bit체에서 약 1.2GB정도 차지한다. 계산법은 Page 용량이 4KB이니까 MAX 300,000으로 유지 되기 때문에 1.2GB라는 계산이 나오는 것이다. 4G Memory일 경우 3500정도는 유지해야 한다고 하는데 정확한 수치는 어떠한 서비스를 하는 것인지에 따라 다르다고 한다.

● PAE (Physical Address Extension)

이 Option은 32bit System에서 Memory 4G 이상의 메모리를 인식할 수 있게 해주는 옵션이다. 이 옵션에 대해서는 튜닝 두번째 내용에서 다루었기 때문에 여기서는 Windows에서 동작하는 MMU(Memory Management Unit) 의 동작 원리에 대해 알아보고자 한다.

image image

image      /PAE

image /NOPAE

이번 Topic에서는 글보다는 그림이 많은거 같다...ㅋ 여담이고 /PAE Option을 적용하면 부팅시 Ntkrnlpa.exe(Uniprocessor), Ntkrpamp.exe (Multi)라 불리는 Kernel이 Load되어 윗 그림과 같은 구조로 Vitrual Address Mapping 방식이 바뀌게 된다. 즉 /PAE Option이 적용될때는 3분할 방식으로 Vitrual Address영역에 접근하게 되는 것이고 PAE Option이 적용되지 않을 때는 2분할 방식을 이용하게 되는 것이다. /PAE Option을 적용하더라도 Registry Flags 값이나, Non Paged Pool Size, "Well-Known" kernel Address는 변하지 않는다고 한다. /PAE Option이 적용될 경우 다음과 같은 Mechanism으로 인해 Virtual Address에서 Physical Memory 값으로 찾아가게 된다.

1. CR3(Control Registor 3 - 2bit 처리를 하는 레지스터)가 PDPI로 요청을 함

2. 요청된 Index를 PDPE로 검색하여 PDE로 전송

3. PDE내에서 PFN의 Index를 이용하여 PTE에 Mapping한 후 Physical Memory Space에 Mapping

이러한 로직 처리로 Virtual Memory 처리를 한다.