![[linux内存管理] 第000篇 Linux内存管理系列开篇](https://halo-19274848.oss-cn-shanghai.aliyuncs.com/2025/06/halo_pdqfdb0.png?x-oss-process=image/resize,w_800,m_lfit)
[linux内存管理] 第000篇 Linux内存管理系列开篇
本文为Linux内存管理系列文章的摘要总结。文章首先介绍了源码遵循的约定,包括芯片架构、内存架构、内核版本等信息。接着概述了内存管理的一些预备知识,包括内存与内存管理机制、页表查询过程、内存分布等。文章详细分析了物理内存初始化流程,包括启动代码分析、start_kernel全局简述、fixmap映射、memblock子系统等。此外,文章还介绍了各种内存分配器(如buddy分配器、percpu分配器、CMA分配器等)和内存管理相关概念(如缺页异常处理、memcg、PSI等)。最后,列出了文章中涉及的专业术语及其解释。
![[linux内存管理] 第029篇 谁把folio的函数定义“藏”起来了?](https://halo-19274848.oss-cn-shanghai.aliyuncs.com/2025/08/halo_lwibxfi.jpg?x-oss-process=style/watermark&x-oss-process=image/resize,w_800,m_lfit)
[linux内存管理] 第029篇 谁把folio的函数定义“藏”起来了?
这篇文章探讨了Linux内核中一种特殊的函数定义方式,作者在阅读代码时遇到了无法找到某些函数定义的问题,如`folio_test_active()`。通过深入研究,作者发现这些函数是通过宏定义如`PAGE_TYPE_OPS()`和`FOLIO_FLAG()`在`/include/linux/page-flags.h`中定义的。文章详细解释了这些宏如何工作,以及如何通过它们生成函数定义。总结部分指出,这种探索过程虽然艰辛,但对于喜欢阅读代码的人来说,发现和理解这些机制是非常有趣且有益的。
![[linux内存管理] 第028篇 do_anonymous_page只处理私有映射吗?](https://halo-19274848.oss-cn-shanghai.aliyuncs.com/2025/08/halo_woensf8.jpg?x-oss-process=style/watermark&x-oss-process=image/resize,w_800,m_lfit)
[linux内存管理] 第028篇 do_anonymous_page只处理私有映射吗?
笔者水平较低,如有错误欢迎各位看官老爷指正,Thanks♪(・ω・)ノ 笔者忽然高产了起来,原因是因为笔者总算是搞明白了一个近几天一直困扰自己的问题,为什么网上一些帖子说do_anonymous_page只用来处理私有匿名映射呢? 看到这个函数,下意识就会觉得其实它是用来处理所有匿名映射的才对啊。
![[linux内存管理] 第001篇 内存与内存管理机制](https://hexoimg.oss-cn-shanghai.aliyuncs.com/blog/24/11/cover_linux_memory_management_001.png)
[linux内存管理] 第001篇 内存与内存管理机制
前言 在操作系统还没有出现之前,程序存放在纸带上,计算机读取一张纸带就运行一条指令,这种从外部存储介质上直接运行指令的方法效率很低。 后来出现了内存存储器,也就是说,程序要运行,首先要加载,然后执行,这就是所谓的 “存储的程序”。这一概念开启了操作系统快速发展的通道,直至后来出现了分页机制。 在这个
![[linux内存管理] 第002篇 页表查询过程简述](https://hexoimg.oss-cn-shanghai.aliyuncs.com/blog/24/11/cover_linux_memory_management_002.png)
[linux内存管理] 第002篇 页表查询过程简述
{% tip success %} kernel版本:5.15 源码注释:iliuqi的5.15内核 {% endtip %} 0. 前言 本篇主要在代码剖析Page 之前的理论阐述,其中包括 MMU、TLB、TTW、VIVT、VIPT、PIPT等术语的含义,介绍MMU 中 TLB、TTW 的工作原