ggnm:
我的体会是结合书和souce code一起看。即使这样,也不宜一个人在那埋头苦读,Linux之所以成功,就是因为成千上万的程序员在网上讨论的结果。我们学习souce code也应该这样做,尽量将自己的体会写出来,和其他人共享。实际上,我认为看懂design,只能说懂了30%,看懂souce code, 只能说懂了50%,自己implement一回,只能说懂了80%,最后经过漫长的debug阶段,将大部分的corner cases搞清楚,才可以说懂了95%以上。
学习Linux的souce code,究竟要学到什么样的层次,取决于你的目的。如果只是想了解design,看看书,看看函数的相互调用关系就行了。如果想弄清楚implementation,必须要看souce code。如果想自己实现一个OS或者其中的某部分,单看书是不行的,最好看懂每一行code. 但不管这么样,都应该将自己的体会写出来,和大家分享 。
---------------------------------------------------------------------
lucian_yao:
感觉内核的学习方式采用几个人通过密切交流的团队方式比较好,不适合采用系统的有组织的学习。
我感觉一个比较好的方式是,先看<<Understanding the Linux Kernel>>,大概了解一下, 然后就自己看源码, 理解得差不多了再回来看情景分析等比较细致的书.一上来就看情景分析这样的书容易晕,并不比你直接看源码快多少,而且理解的深刻程度上有差距. 最好针对某个特定的问题看,一个一个解决,而不要什么都看.
总是见到这种现象:一有个什么内核文档,许多人都马上要,似乎这是什么灵丹妙药.银弹是没有的.功夫总是要下的.对内核的理解可能需要自己下足够的功夫,任何人都帮不了你.
事实上, 阅读内核源码的益处更多的可能在内核之外,如果你专注于软件的话,不管是否开源,都会有大量的代码文档要读, 阅读内核源码是一种很好的锻炼, 不仅是对技能的锻炼,更多的是对信心的锻炼, 想想自Linux源码都能读懂,还有什么代码,什么文档搞不定.