Skip to content

Conversation

@lianux-mm
Copy link

@lianux-mm lianux-mm commented Nov 24, 2025

新增swap机制介绍,这部分和之前的内存讲解有一定联系,本身是内存管理的一部分但是不是之前内容的后续部分,此次贡献为swap 机制的原理和一些新的改进部分,后续围绕改进和涉及的数据结构会做贡献,具体以后续讨论结果增加,新增部分格式对齐了前面的章节

swap机制和演进
--------------------------------------------------------------------------------

在深入探索内核 Swap 机制的奥秘之前,我们必须首先明确其存在的根基——物理内存管理。系统的所有活动都围绕着对物理页面(在现代内核中更常被称为 page/folio)的分配与使用。这些以 4KB 为基本单位的物理内存页,在系统上电初始化后,便由内核的伙伴系统(Buddy System)统一管理,等待着为进程和内核自身提供服务。

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

一个物理页面应该是一个page,folio是另外一种抽象,所以这里的描述并不是很严谨

为了挣脱“巨锁”的束缚,内核开发者们迈出了演进的第一步。他们借用了文件系统页面缓存(Page Cache)的管理框架,将庞大的交换空间逻辑上切分为以 64MB 为单位的管理单元,即 swap_address_space。

每一个 64MB 的 address_space 都由一棵独立的 XArray 树 来管理。这成功地将一把“全局锁”打碎成了多把“64MB 区域锁”,显著缓解了锁竞争(注:关于 XArray 的精妙设计,强烈推荐阅读 Kairui 哥的深度解析文章)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

如果有外部链接,在reference加上

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这部分附到文末了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants