引言

Linux内核内存管理是操作系统最复杂的子系统之一。从物理页面的分配与回收,到内核对象的缓存管理,再到用户空间的虚拟内存映射,内核内存管理系统需要在高吞吐、低碎片、实时性之间取得平衡。本文将深入剖析 Linux 内核内存管理的完整链路——伙伴系统(Buddy System)、SLAB/SLUB 分配器、vmalloc 机制、内存碎片整理策略以及 OOM Killer 决策机制,并结合生产环境案例给出调优指南。

一、物理页面分配器:伙伴系统(Buddy System)

1.1 核心设计思想

伙伴系统是 Linux 物理内存分配的基础设施。它将可用内存划分为 11 个队列(order 0~10),每个队列管理大小为 2^order 个页面的连续内存块。Order-0 管理单页(4KB),order-10 管理 1024 个页面(4MB)。

伙伴关系的定义:两个大小相同、物理地址连续、且合并后能构成更大块的内存块互为"伙伴"。伙伴的地址关系是:block_b 的起始地址 = block_a 起始地址 XOR (1

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部