如何为初学者理解Linux内核源代码?[关闭]


12

我是一名对内存管理感兴趣的学生,尤其是linux内核的页面替换组件。

有什么不同的指南可以帮助我开始理解内核源代码?

我曾尝试阅读Mel Gorman 的《了解Linux虚拟内存管理器》和Cesati和Bovet的《了解Linux内核》这本书,但是他们没有解释代码中的控制流程。他们仅最终解释了所使用的各种数据结构以及各种功能执行的工作。这使代码更加混乱。

我的项目涉及在主流内核中调整页面替换算法,并针对一组工作负载分析其性能。有没有一种易于理解的Linux内核(如果不是linux-2.6.xx内核)?


1
我想问一下为什么在复杂代码中找路不容易时,为什么选择进行内核编程?
LennyProgrammers 2011年

Answers:


13

专注于数据结构。通常,了解数据结构比代码更重要。

如果只显示数据结构而不显示代码,那么您仍然可以大致了解系统。

反之亦然,如果仅显示代码而不显示数据结构,则很难理解系统。

“事实上,我会声称,一个糟糕的程序员与一个好的程序员之间的区别在于,他是否认为自己的代码或数据结构更重要。糟糕的程序员会担心代码。好的程序员会担心数据结构及其关系。” 莱纳斯·托瓦尔兹(Linus Torvalds)

“向我展示您的流程图并隐藏您的表格,我将继续感到困惑。向我展示您的表格,我通常不需要您的流程图;它们将显而易见。” -弗雷德·布鲁克斯(Fred Brooks)。



3

调试器选项可能很有用。

使用debugger选项构建内核后,可以做的其他事情是编写一些调用各种系统调用的示例测试应用程序,这些应用程序将调用内核,您可以一次遍历一段内核代码并了解其实现。



0

学习复杂代码库的一种方法是在调试器中运行它,然后看问题如何处理。对于Linux,有Linux内核调试器


我不确定这是否对仍在尝试处理此巨大代码段以及其工作方式的人
有用

1
我已经用大量的代码库完成了这种方法。但是,您需要一个切入点和一个想法来寻找。
LennyProgrammers

是的,这就是我的意思,他需要在调试内核之前先知道要查找的内容
Mahmoud Hossam,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.