Chinaunix
标题:
内存管理小节
[打印本页]
作者:
thewayma
时间:
2009-10-10 10:43
标题:
内存管理小节
slab && buddy
顺序: 从高到底,即slab-->buddy
一 分配过程(allocation)
a).Slab
1 slab 向per_cpu_variable struct array_cache 请求本地CPU缓存(2.6 new feature)
2 若无, 则请求CPU共享缓存
3 若无, 则向slab请求 partial--->free; 并对本地CPU缓存进行更新
4 若无, 则 binary buddy algorithem
kmalloc会根据对象本身大小想malloc_size数组进行查询;根据结果,在调用slab接口
b).Buddy
if(请求内存 == 1个页面)//2.6 new feature ==>整体效率据说提升17%
向本地CPU"冷" "热"缓存进行申请
else // 申请不成功、或申请多个页面
调用__rmqueue, 根据具体buddy算法
最后用expand进行调整
本文来自ChinaUnix博客,如果查看原文请点:
http://blog.chinaunix.net/u2/86301/showart_2066909.html
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2