前言:
本系列分析的源码都遵循如下的约定:
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
第六部分:虚拟内存对象与缺页
第七部分:页缓存与回写
第八部分:内存回收
LRU/vmscan/kswapd/direct reclaim
第九部分:内存交换与内存压缩
Swap/zram/zswap