虚存管理数据结构

虚存管理数据结构_第1张图片
虚拟内存管理数据结构

如上图所示,大概的进程虚拟内存管理关系图

重点结构  对于mm_struct中 mm代表的结构包括三个 1 mmap 链表,2 mmap_val平衡树 3 mmap_cache, 当vm_area_struct比较少的时候使用

链表保存结构,当数量较多的时候为了增加查找速度,使用平衡书,cache则用于缓存最后一次使用的vm结构,命中率大概35%


内核维护的结构则比较复杂


虚存管理数据结构_第2张图片

有三层结构 

第一层pglist_data用于表示numa中的不同区域

第二层zone_struct用于管理每个区域中不同管理区,包括ZONE_DMA, ZONE_NORMAL,ZONE_HIGHMEM

第三层用于描述内存块,包含一系列不同大小的内存块序列

注意以上三层结构全都用于描述物理内存。

mem_map节后则是对物理内存管理的最终数据结构,该数组中没一个页对应一个结构,且是按照线性一一映射的,通过物理内存找到该数据结构中的页使用如下代码

#define pte_page(x) \ (mem_map+((unsigned long)((x).pte_low>> PAGE_SHIFT))

#define virt_to_page(kaddr) (mem_map+(__pa(kaddr)>>PAGE_SHIFT))    根据内核虚拟地址查询page结构

你可能感兴趣的:(虚存管理数据结构)