티스토리 뷰

Windows server 2003 작업 관리자를 실행하면 아래와 같이 시스템의 메모리 사용 현황을 확인 할 수 있습니다. 그 중할당 된 메모리 즉 Commit charge 가 무엇인지 정리 해 보았습니다.

[VirtualAlloc Function]
http://msdn.microsoft.com/en-us/library/aa366887(VS.85).aspx

 

Commit charge virtual page backing store 를 가지는 것을 의미합니다.

Backing store(=physical storage)로는 RAM paging file 이 있습니다.그러니까 어느 순간 virtual page 의 내용은 physical page(RAM) 에 있거나 HDD paging file 에 있을 수 있습니다.

VirtualAlloc with MEM_COMMIT virtual address space 를 할당 받으면 예를들어 0x1000(4KB) 를 할당받으면 이 virtual page 해당하는 backing store 가 정해져야 합니다.

backing store 는 일단은 paging file 0x1000 만큼 잡힙니다(이때도
실제로 paging file 0x1000 만큼 커지는 것이 아니라 그렇게 커질 수 있다는 암시만 합니다. 실제로는 0x1000 만큼의 data 가 만들어지면 저장되죠)

0x1000 paging file 에 있다가 RAM physical page page in 됩니다. 실제로 process 에서 사용되면 그때가서

MEM_RESERVE VirtualAlloc call 하면 이 backing store 는 할당이 안되고 단지 virtual address space 0x1000 만큼 잡아 놓아요.

Windows 에서 process 가 노는 공간은 물론 virtual address space 이지만(32-bit 에선 이게 4 GB 이죠 하위 2 GB for user mode상위 2 GB for kernel mode)

실제로 data 가 가상의 공간에 존재 할 순 없지요 어느 물리적인 실제 저장소에 있어야 해요 그게 backing store

RAM or paging file 이지요.

그래서 COMMIT CHARGE 는 바로 TOTAL RAM + paging file size 입니다.


 

[참고 자료]
Understanding Memory Usage in Windows 2000
http://technet.microsoft.com/en-us/library/bb742598.aspx

작업 관리자 성능탭
http://blog.naver.com/spef/110034397800

감사합니다.

댓글
댓글쓰기 폼