瀏覽單個文章
cmwang
Elite Member
 

加入日期: May 2002
您的住址: 板橋
文章: 5,112
以下引自Understanding the Linux Virtual Memory Manager
....

引用:
2.7 High Memory

Because the address space usable by the kernel (ZONE NORMAL) is limited in size,the kernel has support for the concept of high memory. Two thresholds of high memory exist on 32-bit x86 systems, one at 4GiB and a second at 64GiB.

snipped....

The second limit at 64GiB is related to PAE, which is an Intel invention to allow more RAM to be used with 32-bit systems. It makes four extra bits available for the addressing of memory, allowing up to 2^36 bytes (64GiB) of memory to be addressed.

PAE allows a processor to address up to 64GiB in theory but, in practice,processes in Linux still cannot access that much RAM because, the virtual address space is still only 4GiB. This has led to some disappointment from users who have tried to malloc() all their RAM with one process.

Second, PAE does not allow the kernel itself to have this much RAM available.
The struct page used to describe each page frame still requires 44 bytes,and this uses kernel virtual address space in ZONE NORMAL. That means that to describe 1GiB of memory, approximately 11MiB of kernel memory is required.
Thus, with 16GiB, 176MiB of memory is consumed, putting significant pressure
on ZONE NORMAL. This does not sound too bad until other structures are taken into account that use ZONE NORMAL. Even very small structures, such as Page Table Entries(PTEs), require about 16MiB in the worst case. This makes 16GiB about the practical limit for available physical memory of Linux on an x86. If more memory needs to be accessed, the advice given is simple and straightforward. Buy a 64-bit machine.


鵝是不清楚Windows系列的記憶體管理到底是怎麼做的,既然PAE先天上的限制也不少,在linux而且AP還找得到source code的情況下,還是轉到64bit上比較徹底,至於RAM在4GB-16GB間的狀況就視情況而定了....
__________________
士大夫之無恥,是謂國恥....
舊 2009-04-16, 01:35 PM #44
回應時引用此文章
cmwang離線中