[转] 史上最经典的Linux内核学习方法论

  待到山花烂漫时,还是那些经典在微笑。

  有关内核的书籍可以用汗牛充栋来形容,不过只有一些经典的神作经住了考验。首先是5本久经考验的神作(个人概括为“2+1+2”,第一个2是指2本全面讲 解内核的书,中间的1指1本讲解驱动开发的书,后面的2则指2本有关内核具体子系统的书,你是否想到了某某广告里三个人突然站起单臂齐举高呼“1比1 比 1”的场景?)。

  《Linux内核设计与实现》

  简称LKD,从入门开始,介绍了诸如进程管理、系统调用、中断和中断处理程序、内核同步、时

  间管理、内存管理、地址空间、调试技术等方面,内容比较浅显易懂,个人认为是内核新人首先必

  读的书籍。新人得有此书,足矣!

  《深入理解Linux内核》

  简称ULK,相比于LKD的内容不够深入、覆盖面不广,ULK要深入全面得多。

  前面这两本,一本提纲挈领,一本全面深入。

  《Linux设备驱动程序》

  简称LDD,驱动开发者都要人手一本了。

  《深入理解Linux虚拟内存管理》

  简称LVMM,是一本介绍Linux虚拟内存管理机制的书。如果你希望深入的研究Linux的内存管理

  子系统,仔细的研读这本书无疑是最好的选择。

  《深入理解LINUX网络内幕》

  一本讲解网络子系统实现的书,通过这本书,我们可以了解到Linux内核是如何实现复杂的网络功能的。(忘了声明下,我这列出来的书名是中文的,但是并不代表我建议大家去看他们的中文版,其中有的翻译的实在太??了,呵呵)

  这5本书各有侧重,正如下面的图所展示的那样,恰好代表了个人一直主张的内核学习方法:首先通过LKD或ULK了解内核的设计实现特点,对内核有个整体全局的认识和理解,然后可分为两个岔路,如果从事驱动开发,则钻研LDD,如果希望对内核不是泛泛而谈而是有更深入的理解,则可以选择一个自己感兴趣的子系统,仔细分析它的代码,不懂的地方就通过社区、邮件列表或者直接发Email给maintainer请教等途径弄懂,切勿得过且过,这样分析下来,对同步、中断等等内核的很多机制也同样会非常了解,俗话说的一通则百通就是这个道理。当然,如果你选择研究的是内存管理或者网络,则可以有上面的两本书可以学习,如果是其他子系统可能就没有这么好的运气了。

  内核社区

  最近几年,社区网站非常的热火,不过此社区非彼社区。

  Linux最大的一个优势就是它有一个紧密团结了众多使用者和开发者的社区,它的目标就是提供尽善尽美的内核。内核社区的中心是内核邮件列表(Linux Kernel Mailing List,LKML),我们可以在http://vger.kernel.org/vger-lists.html#linux-kernel上面看到订阅这个邮件列表的细节。

  内核邮件列表的流量很大,每天都有几百条消息,这里是大牛们的战场,小牛们的天堂,任何一个内核开发者都可以从中受益非浅。除了LKML,大多数子系统也有自己独立的邮件列表来协调各自的开发工作,比如USB子系统的邮件列表可以在http://www.linux-usb.org/mailing.html上面订阅。

  其他网络资源

  除了内核邮件列表,还有很多其他的论坛或网站值得我们经常关注。我们要知道,网络上不仅有兽兽和凤姐,也不仅有犀利哥和韩局长。http://www.kernel.org/ 可以通过这个网站上下载内核的源代码和补丁、跟踪内核bug等。http://kerneltrap.org Linux和BSD内核的技术新闻。如果没时间跟踪LKML,那么经常浏览kerneltrap是个好主意。http://lwn.net/ Linux weekly news,创建于1997年底的一个Linux新闻站点。http://zh-kernel.org/mailman/listinfo/linux-kernel 这是内核开发的中文邮件列表,里面活跃着很多内核开发领域的华人,比如Herbert Xu,、Mingming Cao、Bryan Wu等。