什么是slab分配
SLAB分配内存策略是一种内存管理机制,它通过提供一个预先分配好的对象池来提高内存分配和释放的效率。在SLAB机制中,内核为每一种类型的数据结构维护一个对象池,包含预分配的内存块,这些内存块可以随时用于分配对象。
在SLAB分配内存策略中,内核把内存分配和释放的过程分为三个部分:slab初始化、slab中对象的分配和释放、slab的销毁。SLAB机制可以有效地避免内存碎片的问题,提高内存分配和释放的效率。
在进行内存分配时,内核首先检查SLAB对象池中是否有空闲的内存块,如果有,就直接分配给请求者;如果没有,就会从高速缓存中分配一个新的对象池,包含足够数量的内存块。内核会在对象池中维护一张位图,记录内存块的使用情况。当请求者释放内存时,内核会将该内存块标记为未使用,并且可以重复使用。
伙伴算法与slab的关系
伙伴算法和slab是两个不同的概念,但它们在操作系统的内存管理中有联系。
伙伴算法是一种用来管理内存碎片的算法,它通过将内存分成不同大小的块并使用二叉树来维护这些块的使用情况,以帮助系统高效地分配内存。伙伴算法主要用于页分配器中,以分配大小相等的物理页面。
而slab是管理内核空间的一种内存分配器,它通过将内存分成多个缓存池来缓存不同大小的对象,并且在对象需要被分配或释放时,可以高效地完成内存分配和释放操作。 slabs 内存分配器是在伙伴算法的基础上发展出来的。
因此,可以说伙伴算法是内存管理的基石,而slab是在其基础上实现的内存分配器。两者在实际应用中经常一起使用,以高效地管理和分配内存。
【最后一个bug】多平台都有更新和发布,大家可以一键三连,关注+星标,不错过精彩内容~