從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。
沒有留言:
張貼留言