slab分配器(续)
用slab分配内存的不同方法的共同的入口是__cache_alloc():
先用should_failslab初步判断是否可以完成分配(标志位可能是NOFAIL);
调用__do_cache_alloc(cachep, flags, &this_cpu)来完成分配;
调用cache_alloc_debugch
http://cyqdata.cn/cnblogs/article-detail-52158
slab分配器
为什么要用slab分配器?程序运行的很多时候并不是去分配一下大的内存,比如task_struct这样的小的结构,如果用伙伴系统来管理者部分的内存分配就太慢了。还有在调用伙伴系统那个的时候对系统的数据和指令高速缓存有相当的影响(slab会减少对伙伴系统的调用)。如果数据存储在伙伴系统提供的页中
http://cyqdata.cn/cnblogs/article-detail-42847