本书是一本有关Linux操作系统内核基本工作原理的入门读物。
本书的主要目标
本书的主要目标是使用尽量少的篇幅,对完整的Linux内核源代码进行解剖,使读者对操作系统的基本功能和实际实现方式获得全方位的理解。
本书读者应是知晓Linux系统的一般使用方法或具有一定的编程基础,但比较缺乏阅读目前最新内核源代码的基础知识,又急切希望能够进一步理解IJNIX类操作系统内核工作原理和实际代码实现的爱好者。这部分读者的水平应该界于初级与中级水平之间。目前,这部分读者人数在Linux爱好者中所占的比例是很高的,而面向这部分读者以比较易懂和有效的手段讲解内核的书籍资料不多。 现有书籍不足之处 目前已有的描述Linux内核的书籍,均尽量选用最新Linux内核版本(例如Fedora 8使用的2.6.24稳定版等)进行描述,但由于目前Linux内核整个源代码的大小已经非常大(例如2.2.20版就已具有268万行代码!),因此这些书籍仅能对LJnux内核源代码进行选择性或原理性的说明,许多系统实现细节被忽略。因此并不能使读者对实际L,inux内核有清晰而完整的理解。
Scott Maxwell的《Linux内核源代码分析》基本上是面对Linux中、高级水平的读者,需要较为全面的基础知识才能完全理解。而且可能是由于篇幅所限,该书并没有对所有Linux内核代码进行注释,略去了很多内核实现细节,例如内核中使用的各个头文件(*.h)、生成内核代码映像文件的工具程序、各个make文件的作用和实现等均没有涉及。因此对于处于初、中级水平之间的读者来说阅读该书有些困难。
John Lions的《莱昂氏LINIX源代码分析》虽然是一本学习UNIX类操作系统内核源代码很好的书,但是由于其采用的是UNIX V6版,其中系统调用等部分代码是用早已废弃的PDP.11系列机的汇编语言编制的,因此在阅读和理解与硬件部分相关的源代码时就会遇到较大的困难。
A.S.Tanenbaum的《操作系统:设计与实现》是有关操作系统内核实现很好的入门书籍,但该书所叙述的M1NⅨ系统是一种基于消息传递的内核实现机制,与IAnux内核的实现有所区别。因此在学习该书之后,并不能很顺利地即刻着手进一步学习较新的Linux内核源代码实现。
在使用这些书籍进行学习时会有一种“盲人摸象”的感觉,不容易真正理解Linux内核系统具体实现的整体概念,尤其是对那些Linux系统初学者,或刚学会如何使用Linux系统的人在使用那些书学习内核原理时,内核的整体运作结构并不能清晰地在脑海中形成。这在本人多年的Linux内核学习过程中也深有体会。在1991年10月,Linux的创始人Linus’Forvalds在开发出Linux 0.03版后写的一篇文章中也提到了同样的问题。在这篇题为《IJnux-aFree unix.386Kernel》目的文章中,他说:“开发Linux是为了那些操作系统爱好者和计算机科学系的学生使用、学习和娱乐”。“自由软件基金会的GN2J Hurd系统如果开发出来就已经显得太庞大而不适合学习和理解。”