源码基于:Linux5.4
在 zone初始化一文中简单剖析了 zone 的初始化流程,也是继 memblock初始化 和 SPARSEMEM初始化 之后有一个内存管理层,而zone 这一层管理层中,所有的物理内存都会被添加到zone 中的成员变量 free_area 数组管理,而它就是buddy 系统管理的核心数据结构。
buddy 系统是操作系统中常用的一种动态存储管理方法,在用户提出申请时,分配一个大小合适的内存块给用户,并在用户释放内存块时回收。在buddy 系统中,内存块(page block)的大小是2 的 order 次幂个pages。Linux 内核中 order 的最大值用MAX_ORDER来表示,通常是11,也就是最大的物理内存块可以达到