+ -
当前位置:首页 → 问答吧 → bootmem allocator 有没有什么精华所在啊?

bootmem allocator 有没有什么精华所在啊?

时间:2010-08-15

来源:互联网

今天粗略看了下linux 启动阶段的bootmem allocator, 看完之后就想,为什么弄个bootmem allocator,必须的用吗?
于是上网查了下,很多文章讲到“bootmem就是在buddy system初始化之前的一个简单的内存分配器”。这句话是不是可以这么理解:由bootmem allocator才能过度到buddy算法。 那么bootmem allocator做了那些东西,才使得buddy算法能够正确运行的?个人的感觉bootmem allocator主要做了一下几个工作:
1 node_bootmem_map 位图表,标记物理内存状态
2 统计可用物理内存,建立并初始化pg_data_t(node), zone, page数据结构以及他们之间的关系
3 其他一些模块的内存分配和管理

我的问题就是:
1 bootmem allocator做了那些准备,才使得buddy算法能够正常使用的?
2 bootmem allocator 有什么比较精华的地方,否则就没什么研究的意义了。

作者: liujunwei1234   发布时间: 2010-08-15

buddy是建立在此内存分配器基础之上的!
只有在内存分配器位图标识的页框可用的情况下才会被添加到buddy中。
最后内存分配器就被废除了!分配器位图所占用的页框被添加到了buddy中!
最后系统中只有buddy和slab!

作者: zd零   发布时间: 2010-08-15