读书人

boot memory allocator自举内存储

发布时间: 2012-09-10 22:20:13 作者: rapoo

boot memory allocator——自举内存分配器(五:停用bootmem)

在系统初始化进行到伙伴系统分配器能够承担内存管理的责任后,必须停用bootmem分配器,毕竟不能同时用两个分配器管理内存。在UMA和NUMA系统上,停用分别由free_all_bootmem和free_all_bootmem_node完成。在伙伴系统建立以后,特定于体系结构的初始化代码需要调用这两个函数。本文还是选择讨论UMA系统。

free_all_bootmem如下:

fastcall void __free_pages(struct page *page, unsigned int order){if (put_page_testzero(page)) {//把  page 的计数原子性的减 1 ,并测试是否为 0 ,如果为 0 ,返回  true,否则返回  falseif (order == 0)free_hot_page(page);//把该页释放到该页所属内存node的内存页区的当前处理器的“热区”高数缓存内存中,后面的文章会详细讨论else__free_pages_ok(page, order);//否者就调用伙伴系统内存释放操作函数,后面的文章会详细讨论}}



读书人网 >软件架构设计

热点推荐