Dav*_*rtz 11
平板是相同大小的对象的集合.它通过分配相当大的内存块并将其分成相等大小的块来避免碎片.件数通常远大于两个,比如128个左右.
有两种方法可以使用平板.首先,你可以只为你经常分配的一个尺寸制作一个平板.例如,内核可能有一个inode slab.但是你也可以有一些渐进尺寸的平板,比如一个128字节的平板,一个192字节的平板,一个256字节的平板,依此类推.然后,您可以从下一个板尺寸中分配任意大小的对象.
请注意,在任何情况下,slab都不会为不同大小的对象重用内存,除非将整个slab释放回全局"大块"分配器.
伙伴系统是一种不相关的方法,其中每个对象都有一个"伙伴"对象,当它被释放时它与它结合.当需要较小的块时,块被分成两半.请注意,在伙伴系统中,块被分割并合并为更大的块,作为主要的分配方式并返回以供重用.这与板坯的工作原理有很大不同.
或者更简单地说:
伙伴系统:各种大小的块在分配时被分割,并且在释放时被合并以根据需要有效地将大块分成各种大小的块.
平板:分配非常大的块并将其划分为相等大小的块.不会发生其他分割或合并,并且释放块仅保存在列表中以分配给后续分配.
Linux内核的核心分配器是一个灵活的伙伴系统分配器.该分配器为各种板坯涂层机提供板坯.
归档时间: |
|
查看次数: |
4485 次 |
最近记录: |