10000 reasons小孩:Linux内核书籍点评

来源:百度文库 编辑:偶看新闻 时间:2024/05/07 18:31:40
Linux内核书籍点评
  从99年开始带学生分析Linux内核,一路走来,积累了不少资料,也编写和翻译了近10本相关书籍,一直在摸索怎样才能使大家尽快走入内核,但似乎没有捷径。尤其是内核版本的不断更新,更是不少内核爱好者无所适从。

  我们初次接触的内核资料是“The Linux Kernel”( kernelbook.sourceforge.net),介绍的是Linux2.0,尽管其中的内容过于概略,但其引导性的全面概述,使我们逐步找到了进入内核的入口。

  依然记得“Concrete Architecture of the Linux Kernel”这篇文章,当我在网上查到这篇文章时,一遍遍的阅读之后,虽然还是朦朦胧胧的感觉,但这种高屋建瓴式的对内核的整体性把握,使得内核这个庞然大物有了骨架,这也符合了从整体入手,各个击破的思维模式。这篇文章对内核的分析采用了反向工程中自顶向下和自低向上的策略,对内核这样一个没有起点,也没有终点的圆球,首先得找一个入口点。也许大家认为从进程入手是个不错的选择,但我们啃的第一块硬骨头是“Unix下保护模式的编程”,主要阅读其中的第四章,关于保护模式。

  另外,我们经常阅读的资料还有Linux Kernel howto。其实,最直接的资料还是源代码以及其中的doc。我经常访问的源代码网站是lxr.linux.no,其进行了较大的调整,不仅有内核的每一版本的源代码,而且增加了不少的文档。

  我们的第一本书《Linux操作系统内核分析》在2000年出版后,很多读者给予认可。我想这可能是因为,在本书的编写过程中,我们没有拘泥于任何框框,只是把我们在分析2.0内核时,阅读的相关资料以及自我认识,比较原始的展现出来。尽管书所涵盖的内容远非我们曾经设想的,但对入门而言,可以让读者少走不少弯路。

  本书之后,我们翻译了内核红宝书《Understanding The Linux Kernel》(已经出版了三版),在本书的翻译过程中,我时不时有插入源代码的愿望,也就是说,本书的原理和叙述比较顺畅,但如果没有源码在手,有时如坠雾里。因此建议,本书的阅读,尽量要与源码结合。

  在这之后,在《Linux操作系统内核分析》基础上,对2.4版的内核进行分析。 当我着手《深入分析Linux内核源代码》这本书的编写时,看到了毛德操、胡希明 著的《Linux内核源代码情景分析》一书。厚厚的两大本,完全是娓娓道来。本书作者以英语情景会话的方式,对阅读内核代码路途中遇到的几乎每个函数,都一一说明。但是,因为内核代码的深层次嵌套,如果你在阅读的过程中,没有做好返回“现场”这样的准备,很可能走入某条小径后不知返回的路途在哪里了。但是,如果你有时间,而且有耐心,仔细阅读本书,应该说可以全景式掌握Linux内核。

  在此说明,《深入分析Linux内核源代码》是针对Linux 内核2.4的,本书编写过程中,依然遵循了“Concrete Architecture of the Linux Kernel”一文的从顶向下的思路,同时还不断的比较2.2与2.4内核在开发驱动程序方面的差异。总体感觉,新版本对内核函数进行了较好的封装,让内核接口变得越来越容易。

  《Linux kernel development》一书(中文名“Linux内核设计与实现”,已出两版,2.6内核),又一本口碑较好的Linux内核书籍。当我们费劲翻译完这本并不厚的书时,才感觉其涵盖信息量之大,相比《Understanding The Linux Kernel》,可以说,如果没有内核的基础知识,阅读之后,大有不知所以然之感。尽管这本书深得读者喜欢,我们的翻译也得到读者的极大认可,但还是建议读者有一定内核基础知识之后再去读这本书。

  《The Linux? Kernel Primer: A Top-Down Approach for x86 and PowerPC Architectures》,我们翻译的另一本2.6内核书籍,本书的作者在IBM呆过多年,有开发经验。书中对涉及到的代码逐行给予了解释,因此,在一定程度上适合于初学者。

  在翻译和编写了以上书籍之后,我们为清华大学出版社编写了《Linux操作系统原理与应用》一书,本书的侧重点不在逐行分析源代码,而是对部分源代码有所了解后,让读者能够动手进行内核模块的编写,每章后面的例子有一定的难度,但是,动手之后,再去了解内核相关内容就具有针对性了。

  以上对内核书籍的简评,只限于我们编写和翻译的,像《Linux Device Driver》也是经典内核书籍,并没有给予说明,但建议想进行驱动程序开发的读者最好去阅读。