首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

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

2012-09-10 
boot memory allocator——自举内存分配器(五:停用bootmem)在系统初始化进行到伙伴系统分配器能够承担内存管

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);//否者就调用伙伴系统内存释放操作函数,后面的文章会详细讨论}}



热点排行