slab分配器分配task_struct结构

来源:互联网 发布:大数据 设备故障分析 编辑:程序博客网 时间:2024/05/16 19:03

Linux通过slab分配器分配task_struct结构,这样能达到对象复用和缓存着色的目的


分配和释放数据结构是所有内核中最普遍的操作之一。为了便于数据的频繁分配和回收,编程者常常会用到一个空闲链表。该空闲链表包含可供使用的、已经分配好的数据结构块。当代码需要一个新的数据结构实例时,就可以从空闲链表中取出一个,而不需要分配内存、再把数据放进去。以后,当不再需要这个数据结构的实例时,就把它放回空闲链表、而不是释放掉它。从这个意义上说,空闲链表相当于对象高速缓存以便快速存储频繁使用的对象类型。


在内核中,空闲链表面临的主要问题之一就是不能全局控制。当内存变的紧缺时,内核无法通知每个空闲链表,让其收缩缓存大小以便释放出一些内存来。实际上,内核根本就不知道存在任何空闲链表。为了弥补这一缺陷,也为了使代码更加稳固,linux内核提供了slab层。slab分配器扮演了通用数据结构缓存层的角色。


对存放的对象进行着色,以防止多个对象映射到相同的高速缓存行。

原创粉丝点击