内存管理
- 物理内存管理
- 页面分配
- 小型分配
- 虚拟内存管理
- 缺页错误处理概述
struct pagemem_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_structstruct vm_struct 组成struct vm_area_structstruct mm_struct,红黑树