Maystyle :
Admin : New post
Guestbook
Local
media
Catergories
Recent Articles
Recent Comments
Recent Trackbacks
Calendar
Tag
Archive
Link
Search
 
  왜 10 byte씩 할당하니깐 메모리를 다 못쓰나요? 
작성일시 : 2008. 3. 20. 12:49 | 분류 : Windows Server/Kernel

질문

Windows2003 32bit 버전에서 메모리를 할당시 10byte씩 메모리를 채우면 600~700메가에서 더 이상 할당이 안됩니다.
1Kbyte 씩 채우면 2G까지 할당된다고 하네요~ 혹시 이유를 알고 계신가요?
현재 상기의 이유 때문에 게임서버를 64bit로 업그래이드 하려 한다는데, 업그래이드를 해도 이유를 알고 업그래이드를 하는게 맞는 순서인듯 하여 메일드립니다.~

작은 이유라도 혹시 알고 있다면 혹은 모르더라도 메일 부탁드려요.

답변

최대 PTE 크기는 660M = 660000KB = 660000000Byte 입니다.
10 byte 크기로 Memory Addressing을 한다면 이론적으로는 2G의 공간 표현을 위하여 200M * 4개의 PTE 객체가 필요합니다.  (1개의 PTE 객체는 32bit 즉 4byte의 공간을 사용함) 그러면 총 800M개가 되어 해당 최대 PTE 크기를 초과하게 됩니다.
(커널 이나 다른 객체가 사용하는 것 까지 생각하면 600M 수준으로 어드레싱이 되는게 맞는 것 같습니다.)
하지만 1K Byte로 잡게되면 해당 크기가 80M가 됨으로 PTE 크기를 넘지 않아 어드레싱이 가능합니다.

이 PTE의 사이즈는 부팅시 레지스트리의 데이터를 조사해서 설정합니다...^^

참조 : http://support.microsoft.com/kb/294418/ko

|