Linux内存从0到1学习笔记(6.9,物理内存初始化之Slab分配器)
Posted 高桐@BILL
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux内存从0到1学习笔记(6.9,物理内存初始化之Slab分配器)相关的知识,希望对你有一定的参考价值。
写在前面
前面提到了伙伴系统初始化,我们知道伙伴系统是以页(≥4KB)为单位进行管理的。但在内核中,有些时候需要申请更小字节单位的内存。
slab由此而生...
slab基于伙伴系统的以字节为单位进行管理的内存分配器。它首先从Buddy系统申请内存,然后再对这部分申请到的内存进行细分化管理。
当然,除了提供更小字节单位内存,slab也用于维护常用对象的缓存和提高cpu硬件缓存的利用率。
slab分配器初内核中始化函数调用栈如下:
一、初始化Slab分配器
kmem_cache_init()主要完成内核slab内存分配体系的初始化。
huang:
linux_mainline-5.17.0/mm/slab.c
//slab(slub)初始化
1199 /*
1200 * Initialisation. Called after the page allocator have been initialised and
1201 * before smp_init().
1202 */
1203 void __init kmem_cache_init(void)
1204
1205 int i;
1206 /*
* kmem_cache_init创建系统中的第一个slab缓存,以便为kmem_cache的实例提供内存。
* 为此,内核使
以上是关于Linux内存从0到1学习笔记(6.9,物理内存初始化之Slab分配器)的主要内容,如果未能解决你的问题,请参考以下文章
Linux内存从0到1学习笔记(6.8,物理内存初始化之buddy伙伴系统)
Linux内存从0到1学习笔记(六,物理内存初始化之四 --- 内存分配器)---持续更新
Linux内存从0到1学习笔记(六,物理内存初始化) --- 更新中
Linux内存从0到1学习笔记(6.10 物理内存初始化之vmalloc分配器)