2013年8月26日 星期一

Describing Physical Memory

Reference: http://www.chudov.com/tmp/LinuxVM/html/understand/node16.html

NUMA(non-uniform memory access)架構下,memory被分成很多的bank(又稱為node),而每個bank被CPU access的cost不同
Linux用struct pg_data_t來代表bank(or node)

而PC是一UMA的架構,所以只有一個pg_data_t:contig_page_data

每個node又被切成很多個block稱為zone
Linux用struct zone_t來代表zone,而每個node是ZONE_DMA, ZONE_NORMAL, ZONE_HIGHMEM其中之一
ZONE_ DMA is memory in the lower physical memory ranges which certain ISA devices require.
ZONE_ NORMAL be directly mapped by the kernel in the upper region of the linear address space which is discussed further in Section 5.1

x86架構下
ZONE_ DMA First 16MiB of memory
ZONE_ NORMAL 16MiB - 896MiB
ZONE_ HIGHMEM 896 MiB – End

It is important to note that many kernel operations can only take place using ZONE_ NORMAL so it is the most performance critical zone.

\includegraphics[width=15cm]{graphs/layout.ps}


As the address space usable by the kernel (ZONE_ NORMAL) is limited in size, the kernel has support for the concept of High Memory.
 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. 

0 意見:

張貼留言