虚拟内存管理:原理、策略与操作系统实践
1. slab分配器
slab分配器是一种高效的内存分配机制,它将内存划分为不同的slab,每个slab包含多个相同大小的对象。根据对象的使用情况,slab可以分为以下三种类型:
- Full :slab中的所有对象都被标记为已使用。
- Empty :slab中的所有对象都被标记为空闲。
- Partial :slab中同时包含已使用和空闲的对象。
slab分配器的工作流程如下:
1. 首先尝试从Partial slab中分配一个空闲对象。
2. 如果没有可用的Partial slab,则从Empty slab中分配一个空闲对象。
3. 如果没有可用的Empty slab,则从连续的物理页面中分配一个新的slab,并将其分配给一个缓存,然后从这个slab中分配对象所需的内存。
slab分配器具有以下两个主要优点:
- 无内存碎片浪费 :每个内核数据结构都有一个关联的缓存,每个缓存由一个或多个slab组成,这些slab被划分为与对象大小相同的块。因此,当内核请求对象的内存时,slab分配器返回表示该对象所需的确切内存量。
- 快速满足内存请求 :对象是预先创建的,因此可以从缓存中快速分配。此外,当内核使用完一个对象并释放它时,它被标记为空闲并返回其缓存,从而立即可用于内核的后续请求。
slab分配器最初出现在Solaris 2.4内核中,由于其通用性,现在
超级会员免费看
订阅专栏 解锁全文

1万+

被折叠的 条评论
为什么被折叠?



