星期四, 4月 14, 2005

To understanding Linux VMM

從out of memory module : mm/ook_kill.c
因為這個module和比較獨立,這module的工作在memory low時選一出一個process來kill。

接著non-contiguous memory allocator: mm/vmalloc.c
physical page allocator : mm/page_alloc.c
creation of VMAs and memory area for process

以上的部分在其他VM的部分都會大量的使用到。所以先了解有助於了解其他的code。

--------------------------------------------------------------------------------------

NUMA (Non-Uniform Memory Access)
  硬體的memory有區分,例如:每一個CPU旁都有一塊memory,CPU取用起來比較快。
  DMA旁有一塊。

Node : 每一塊有區分的記憶體都是一個Node。 用pg_data_t 來表示。
 所有的pg_data_會被串起來,在pgdat_list。
 以x86來說,是UMA(uniform memory access),也就是說,
 他只有一塊memory,
 所以x86的linux系統,他的pgdat_list只有一比資料(一個Node)。
Zone :Node又被分成很多小塊(通常依照address分割),叫Zone,
 用zone_t紀錄。
page:每個Zone又被分成很多page,表示的data structure就是
 page所有的page倍放在mem_map[]

GPD (Global Page Directory) : 每個process都有一個GPD。

沒有留言:

張貼留言