读书人

Linux Slab分配器(3)-创建缓存

发布时间: 2012-06-20 20:37:21 作者: rapoo

Linux Slab分配器(三)--创建缓存

创建新的缓存必须通过kmem_cache_create()函数来完成,原型如下

name:所创建的新缓存的名字size :缓存所分配对象的大小align:对象的对齐值flags:创建用的标识ctor:创建对象时的构造函数

kmem_cache_create()的实际工作就是为新的缓存申请缓存描述符,array_cache描述符和kmem_list3描述符,并根据接收的参数对这三个结构中的变量进行相应的初始化。新创建的缓存是空的,不包含slab。



首先做参数有效性的检查计算对齐值分配一个缓存描述符确定slab管理区(slab描述符+kmem_bufctl_t数组)的存储位置调用calculate_slab_order()进行相关项的计算,包括分配给slab的页阶数,碎片大小,slab的对象数计算着色偏移和可用的颜色数量调用setup_cpu_cache()分配array_cache描述符和kmem_list3描述符并初始化相关变量最后将缓存描述符插入cache_chain中

再来看看两个辅助函数calculate_slab_order()和setup_cpu_cache()



在slab初始化完成后,也就是g_cpucache_up变量的值为FULL后,setup_cpu_cache()函数等价于setup_cpu_cache()-->enable_cpucache()



1楼zi77642475前天 11:05
还好没人抢沙发,嚯嚯!沙发依然在!

读书人网 >UNIXLINUX

热点推荐