首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

Linux Slab分配器(7)-销毁缓存

2012-06-20 
Linux Slab分配器(七)--销毁缓存销毁缓存首先要保证的一点就是缓存当中所有的对象都是空闲的,也就是之前分

Linux Slab分配器(七)--销毁缓存

销毁缓存首先要保证的一点就是缓存当中所有的对象都是空闲的,也就是之前分配出去的对象都已经释放回来了,其主要的步骤如下

1.将缓存从cache_chain链表中删除

2.将本地高速缓存、alien高速缓存和共享本地高速缓存中的对象都释放回slab并释放所有的free链表,然后判断full链表以及partial链表是否都为空,如果有一个不为空说明存在非空闲slab,也就是说有对象还未释放,此时无法销毁缓存,重新将缓存添加到cache_chain链表中

3.确定所有的slab都为空闲状态后,将缓存涉及到的所有描述符都释放(这些描述符都是保存在普通高速缓存中的)

 

负责销毁缓存的函数为kmem_cache_destroy()


 

drain_cpu_caches()的最终落脚在free_block()函数上,该函数在前面已做过分析,在此不再列出

 

slab_destroy()函数已在前文中分析

 


 


1楼zi77642475昨天 21:13
人气真心不错!不过还是没得人抢我沙发!哈哈!

热点排行