前言:
本系列分析的源码都遵循如下的约定:
1. 芯片架构:ARM64
2. 内存架构:UMA
3. 内核版本:如无特别说明,本系列源码基于Kernel 5.15
4. CONFIG_ARM64_VA_BITS=39
5. CONFIG_ARM64_PAGE_SHIFT=12
6. CONFIG_PGTABLE_LEVELS=3
7. CONFIG_ARM64_PA_BITS=48
8. CONFIG_SPARSEMEM=y
9. ...
本系列的源码opengrok:iliuqi的linux-5.15
第一部分:内存管理基础架构
第二部分:内核启动阶段的内存初始化
这个阶段会详细从源码剖析,这部分会转载一些优秀的博文(部分博文内容会根据kernel-5.15的内核的变动做一些修改),辅以补充形式的文章。
本篇为了Linux内存管理系列文章的文章序号完整性,文章标题由原来的"linux内核源码解析01-启动代码分析之汇编部分"改为"[linux内存管理] 第005篇 启动代码分析之汇编部分"
强烈建议看完该作者写的Linux内核源码分析的文章作为知识点的补充
第三部分:物理内存模型与组织
第四部分:物理内存分配器 - Buddy系统
第五部分:细粒度内存分配器 - slab/kmalloc/cma
第六部分:虚拟内存对象与缺页
第七部分:页缓存与回写
第八部分:内存回收
第九部分:OOM
[linux内存管理] 第 054 篇 OOM触发 + Memory Reserve + out_of_memory 决策 — 第2章,从触发到决策
[linux内存管理] 第 055 篇 OOM Killer 死亡名单算法— 第3章,打分与筛选
[linux内存管理] 第 056 篇 OOM Reaper:异步解除映射的幕后英雄 — 第4章,异步清理
[linux内存管理] 第 057 章节 OOM Kill 与 panic_on_oom —— 杀人的艺术与崩溃的抉择 — 第5章,处决与崩溃
第九部分:内存交换与内存压缩
[linux内存管理] 第 058 章 Swap 子系统架构
[linux内存管理] 第 059 章 Swap 空间管理
[linux内存管理] 第 060 章 Swap Cache(交换缓存)
[linux内存管理] 第 061 章 Swap 换出与换入
[linux内存管理] 第 062 章 Swap 与 THP/HugeTLB 协作
[linux内存管理] 第 063 章 Swap 统计与调试
[linux内存管理] 第 064 章 zram的概念