Linux内存从0到1学习笔记(6.8,物理内存初始化之buddy伙伴系统)

Posted 高桐@BILL

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux内存从0到1学习笔记(6.8,物理内存初始化之buddy伙伴系统)相关的知识,希望对你有一定的参考价值。

写在前面

在linux启动的那一刻,内存管理就已经开始了。在内核中,实现物理内存管理的allocator包括:

  • 初始化阶段物理内存管理memblock

  • 连续物理内存管理buddy

  • 非连续物理内存管理vmalloc allocator

  • 小块物理内存管理slab allocator

在系统初始化阶段会先启用一个bootmem分配器和memblock分配器,bootmem分配器管理着一个node结点的所有内存,包括numa架构中多个node有多个bootmem,它们被链入bdata_list链表中保存。而伙伴系统的初始化就是将bootmem管理的所有物理页框释放到伙伴系统中去。

接下来我们来简单梳理下,内存分配器的初始化流程(红色部分);

以上是关于Linux内存从0到1学习笔记(6.8,物理内存初始化之buddy伙伴系统)的主要内容,如果未能解决你的问题,请参考以下文章

Linux内存从0到1学习笔记(6.4,物理内存初始化之预留内存)

Linux内存从0到1学习笔记(六,物理内存初始化之四 --- 内存分配器)---持续更新

Linux内存从0到1学习笔记(六,物理内存初始化) --- 更新中

Linux内存从0到1学习笔记(6.10 物理内存初始化之vmalloc分配器)

Linux内存从0到1学习笔记(6.7,物理内存初始化之CMA初始化)

Linux内存从0到1学习笔记(六,物理内存初始化之三 --- 物理内存管理数据结构)