struct page
mem_map
向量中保留有一个条目/* 分配 2^order 个连续页面,并返回指针,指针指向第一个页面的描述符 */
struct page *alloc_pages(gfp_mask, order);
/* 分配单个页面 */
struct page *alloc_page(gfp_mask);
/* 返回内核虚拟地址的辅助函数 */
void *__get_free_pages(gfp_mask, order);
void *__get_free_page(gfp_mask);
void *__get_zero_page(gfp_mask);
void *__get_dma_pages(gfp_mask, order);
struct page
的 lru 字段链接在列表中struct task_struct
),在这个过程中如果使用固定大小的分配,效率将会变高。SLAB 可帮助系统减少消耗资源更多的分配/释放操作。kmalloc()
,具体实现方法为使用 20 种对象大小在 32 字节到 4MB 之间呈几何分布的缓存来实现
struct vm_struct
struct vm_struct
组成struct vm_area_struct
struct mm_struct
,红黑树