内存的slab算法

来源:互联网 发布:韩信战争知乎 编辑:程序博客网 时间:2024/05/07 01:32

•Slab分配模式把对象分组放进缓冲区(尽管英文中使用了Cache这个词,但实际上指的是内存中的区域,而不是指硬件高速缓存)。因为缓冲区的组织和管理与硬件高速缓存的命中率密切相关,因此,Slab缓冲区并非由各个对象直接构成,而是由一连串的“大块(Slab)”构成,而每个大块中则包含了若干个同种类型的对象,这些对象或已被分配,或空闲。


上面是slab算法的定义。由此我们可以看出,slab算法是把一块大内存分成很多的页,多少页作为一个slab,然后把申请的内存作为对象,每一类对象都有一个slab来保存对象。


上图可以看出slab算法的基本思路。

根据申请内存大小,我们可以按照下面的划分方法,来划分对象。

 *Alloc SizeChunking        Number of zones *0-127816 *128-255168 *256-511328 *512-1023648 *1024-20471288 *2048-40952568 *4096-81915128 *8192-1638310248 *16384-3276720488


有了上面的一些基础。我们就可以来一步步实现slab算法。

首先是内存的初始化

在这里我们需要把内存按照页对齐,才能把内存初始化成整页。初始化一些slab的基本参数:slab大小,页数目,页链表,页大小等参数。




内容待续,等整理以后上传。。。

原创粉丝点击