欢迎访问 内存溢出 —— 独立后端与系统工程技术博客

专注于分布式系统、Linux内核、数据库存储与后端工程实践

Linux 内存管理:伙伴系统(Buddy System)与 Slab 分配器

发表于:|最后更新:|分类:Linux与网络|阅读:3397 次

在 Linux 内核中,物理页框(Page Frame,通常为 4KB)的分配由 伙伴系统(Buddy System) 负责,而小于一页的内核对象(如 task_struct、inode、dentry)则由 Slab/Slub 分配器 管理。

一、为什么需要伙伴系统

为了抑制外部内存碎片,伙伴系统将空闲物理页组织成 11 个块链表(Order 0 到 Order 10),分别对应 $2^0$ 到 $2^{10}$ 个连续物理页。

c
struct free_area {
    struct list_head free_list[MIGRATE_TYPES];
    unsigned long nr_free;
};