slab内存管理学习笔记

来源:互联网 发布:网络管理是做什么 编辑:程序博客网 时间:2024/05/17 22:27

看了很多关于slab的资料,今天终于有了一点眉目,现记录于此;

1、主要结构

在系统初始化初始化一个cache链表cache_chain,用于将所有cache连接起来;

每个cache中包含3个slab链表,分别是满、部分满、空,而slab其实就是数个page;这些page中存放对象object;

当slab中的page都未填object,则属于slabs_empty链表;

当sllab中的page部分已填object,则属于slabs_partial链表;

当slab中的page都被object填满时,就将这个slab移动到slabs_full链表上;

2、主要函数

kmem_cache_create创建一个cache结构体,并添加到cache_chain中;kmem_cache_alloc从slab中申请一个obj;
kmem_cache_free将对象obj释放给slab;
kmem_cache_destroy销毁cache;



原创粉丝点击