Библиотека сайта rus-linux.net
The book is available and called simply "Understanding The Linux Virtual Memory Manager". There is a lot of additional material in the book that is not available here, including details on later 2.4 kernels, introductions to 2.6, a whole new chapter on the shared memory filesystem, coverage of TLB management, a lot more code commentary, countless other additions and clarifications and a CD with lots of cool stuff on it. This material (although now dated and lacking in comparison to the book) will remain available although I obviously encourge you to buy the book from your favourite book store :-) . As the book is under the Bruce Perens Open Book Series, it will be available 90 days after appearing on the book shelves which means it is not available right now. When it is available, it will be downloadable from http://www.phptr.com/perens so check there for more information.
To be fully clear, this webpage is not the actual book.
Next: 4. Page Table Management Up: 3. Describing Physical Memory Previous: 3.3 Pages   Contents   Index
3.4 High Memory
As 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. The
4GiB limit is related to the amount of memory that may be addressed by a
32-bit physical address. To access memory between the range of 1GiB and 4GiB,
the kernel temporarily maps pages from high memory into ZONE_ NORMAL
. This
is discussed further in Chapter 10.
The second limit at 64GiB is related to Physical Address Extension (PAE) which is an Intel invention to allow more RAM to be used with 32 bit systems. It makes 4 extra bits available for the addressing of memory, allowing up to 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 as 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.
Secondly, 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 which 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 Linux on an x86. If more
memory needs to be accessed, the advice given is simple and straightforward,
buy a 64 bit machine.
Next: 4. Page Table Management Up: 3. Describing Physical Memory Previous: 3.3 Pages   Contents   Index Mel 2004-02-15