读书人

Linux Slab分配器(4)-分配对象

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

Linux Slab分配器(四)--分配对象

从一个缓存中分配对象总是遵循下面的原则:

1.本地高速缓存中是否有空闲对象,如果有的话则从其中获取对象,这时分配的对象是最“热”的;

2.如果本地高速缓存中没有对象,则从kmem_list3中的slab链表中寻找空闲对象并填充到本地高速缓存再分配;

3.如果所有的slab中都没有空闲对象了,那么就要创建新的slab,再分配 。

函数kmem_cache_alloc用于从特定的缓存获取对象,kmalloc用于从普通缓存中获取对象,它们的执行流程如下图所示

Linux Slab分配器(4)-分配对象

实质性的工作是从____cache_alloc()开始的,因此从这个函数作为入口来分析

对于所有slab都空闲对象的情况,需要调用cache_grow()来增加cache的容量,这个函数在后面分析slab的分配时再做介绍

1楼zi77642475前天 17:21
沙发依然在!

读书人网 >UNIXLINUX

热点推荐