内存的slab算法

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


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


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

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

 *	Alloc Size	Chunking        Number of zones
 *	0-127		8				16
 *	128-255		16				8
 *	256-511		32				8
 *	512-1023	64				8
 *	1024-2047	128				8
 *	2048-4095	256				8
 *	4096-8191	512				8
 *	8192-16383	1024			8
 *	16384-32767	2048			8


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

首先是内存的初始化

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




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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值