如何学习 Linux 内核内存管理

Linux内核内存管理部分是Linux内核中第二复杂的部分,但也非常有趣。学习它的最佳方法就是阅读代码。但在不了解术语和当前 mm 部分到底发生了什么的情况下,显然不能随意开始阅读代码。因此,我想这样开始学习比较好:

  • 了解当前的 LSF/MM 进展
    关注 Linux Storage, Filesystem, and Memory-Management Summit (Linux 存储、文件系统和内存管理峰会 )。LSF/MM 是一年一度的 Linux 存储、文件系统和内存管理峰会,这是一个仅限受邀者参加的活动,人们通常会讨论下一年的计划和项目。人们还可以阅读往年的 LWN 峰会报告。一些内核开发人员也会单独撰写有关此次峰会的博客。

  • 现在,在阅读这些文档时,肯定会有很多问题。这些问题可以一些网站上找到。通常,谷歌搜索肯定会有所帮助。下面列出一些标准网站供参考:

    • (1)LinuxMM - linux-mm.org Wiki 。
    • (2)Understanding the Linux Virtual Memory Manager 这本书不错,但多少有些陈旧。边读边看代码绝对有助于理解事物是如何随着时间而变化的。
      其他书籍:《Professional Linux Kernel Architecture/深入Linux内核架构》、《Linux Kernel Development》、《Understanding the Linux Kernel》。
    • (3)从事内核 mm 部分工作的内核开发人员的博客。
    • (4)LWN.net 上的内核报道 我发现这些文章非常有用。它们是我见过的最好的文档。大多数主题,我都看到了多年来撰写的文章,这些文章有助于了解内核中的事物是如何变化的。
    • (5)内核文档 ( Kernel documentation)。
    • (6)用于测试内核MM的工具集 mmtests。

在阅读的同时,请务必查看代码并尝试理解其工作原理。在 OFTC 服务器上有一个 IRC 频道 #mm。你可以提出与内核内存管理部分相关的问题。

通常在阅读代码时,如果有不明白的地方,我会使用 “git blame”。特别是在mm 部分,开发人员习惯于写详细的提交日志(附带测试用例/程序),以便自己和其他人将来可以参考。大多数时候,我发现这些日志对理解任何代码都很有用。

最后很重要的一点是,要 play 代码。尝试通过修改代码进行实验和测试。你尝试得越多,就会理解得越多。


参考:
如何展开Linux Memory Management学习?

你可能感兴趣的:(学习,linux,运维)