前言

本书是一本有关Linux操作系统内核工作原理的入门读物,主要目标是使用尽量少的篇幅和有限的学习时间,对完整的Linux内核源代码进行解剖,使读者对操作系统的基本功能和实现方式有一个全面的理解。

目前已有的阐述Linux内核的书籍,均尽量选用Linux内核的新版本进行描述,但由于这些版本的内核源代码庞大,只能对源代码进行选择性的讲解,许多实现细节被忽略。本书则对完整的Linux内核源代码进行了全面解剖。表面看来,本书对Linux早期内核版本注释的内容似乎过时,但通过学习你会发现,利用本书学习Linux内核,由于源代码短小精干,因此会有极高的学习效率,能够做到事半功倍、快速入门,并为进一步选择新内核学习打下坚实的基础。

正如Linux系统的创始人Linus所说,要理解一个系统的真正运行机制,一定要阅读其源代码。系统本身是一个整体,具有很多看似不重要的细节。只有在详细阅读过完整的内核源代码之后,才会对整个系统的运作过程有深刻的理解。以后再选择较新内核源代码进行学习时,也不会碰到大问题,基本上都能顺利地理解新代码的内容。

为了帮助读者提高学习效率,作者通过对多个Linux内核版本进行比较和选择,最终选择了与目前Linux内核基本功能较为相近,又非常短小的0.11版作为入门学习的最佳版本。0.11版内核源代码只有一万四千行左右(325KB),其中包括的内容基本上都是Linux系统的精髓。

在阅读本书时,读者应该具备基本的有关80x86处理器编程和相关外围硬件的知识,还应具备使用Linux系统的初级技能。由于Linux最早是根据M. J. Bach的《UNIX操作系统设计》一书的基本原理开发的,因此若能适当参考该书,则更有利于对源代码的理解。

在对每个程序进行描述时,首先说明程序的主要用途、输入输出参数以及与其他程序的关系,然后在程序中对代码进行详细注释。注释时对源代码和原注释不做任何改动。在代码之后对程序中出现的一些语句或硬件方面的相关知识进行说明。

本书所需的一些基本概念均分布在各章中,这样编排主要是为了能够使读者方便地找到相关信息,而且在结合源代码阅读时,对一些基本概念能有更深的理解。另外,由于篇幅所限,书中对内核源代码多数文件开始处的版权信息做了省略,但程序中的行号仍然按原来的编号。

最后要说明的是,当你已经完全理解了本书解说的一切内容时,并不代表你已经成为一个Linux行家了,你只是刚刚踏上Linux的征途,具有了成为一个Linux高手的初步知识。这时你应该去阅读更多的源代码。

本书读者群的定位是一些知晓Linux系统一般使用方法或具有一定编程经验,但比较缺乏阅读目前最新内核源代码的基础,又急切希望能够进一步理解类UNIX操作系统内核工作原理和实际代码实现的爱好者。在阅读时可以参考为本书专门开设的网站www.oldlinux.org。从中可以下载到很多学习资料和上机实习软件。

作者