前言

深入分析Linux内核源代码

陈莉君 编著

人 民 邮 电 出 版 社

前 言

如果说 Linux 的出现是一个偶然,那么,席卷全球的 Linux 热潮则是一个奇迹,Linux正以势不可挡的趋势迅猛发展,其发展前景是无法预测的。

有人说,“Linux 不就是类 UNIX 吗?”是的,它的外在表现形式确实与 UNIX 完全兼容,这也是它赖以生存的基本条件。但是,它的内涵则完全不同,这首先体现在其源代码全部重写及开放,其次是它的快速更新和发展,而更重要的是世界范围内众多计算机爱好者能通过Internet 参与开发,由此可见,借助于 Internet 的肥沃土壤,Linux 的迅速发展是毫无置疑的!

实际上,Linux 最本质的东西体现在其“自由”和“开放”的思想,“自由”意味着世界范围内的知识共享,而“开放”则意味着 Linux 对所有的人都敞开大门,在这开放而自由的天地里,你的创造激情可以得到充分的发挥。

Linux 内核源代码的开放给希望深入操作系统内部世界的人敞开无私的胸怀,我们有幸走进了这个世界,这是一个神奇、错综复杂而又充满诱惑的世界,让喜欢迎接挑战的人们可以充分检验自己的勇气和耐力。

Linux 内核全部源代码是一个庞大的世界,大约有 200 多万行,占 60MB 左右的空间。因此,如何在这庞大而复杂的世界中抓住主要内容,如何找到进入 Linux 内部的突破口,又如何能把 Linux 的源代码变为自己的需要,这就是本书要探讨的内容。

首先,本书的第一章领你走入 Linux 的大门,让你对 Linux 内核的结构有一个整体的了解。然后,第二章介绍了分析 Linux 源代码应具备的基本硬件知识,这是继续向 Linux 内核迈进的必备条件。中断作为操作系统中发生最频繁的一个活动,本书用一章的内容详细描述了中断在操作系统中的具体实现机制。

众所周知,操作系统中最核心的内容就是进程管理、内存管理和文件管理。本书用大量的篇幅描述了这三部分内容,尤其对最复杂的虚拟内存管理进行了详细的分析,其中对内存初始化部分的详细描述将对嵌入式系统的开发者有所帮助。

在对 Linux 内核有一定了解后,读者可能希望能够利用内核函数进行内核级程序的开发,例如开发一个设备驱动程序。Linux 的模块机制就是支持一般用户进行内核级编程。另外,读者在进行内核级编程时还可以快速查阅本书附录部分提供的 Linux 内核 API 函数。

网络也是 Linux 中最复杂的部分之一,这部分内容足可以写一本书。本书仅以面向对象的思想为核心,分别对网络部分中的四个主要对象:协议、套接字、套接字缓冲区及网络设备接口进行了分析。有了对这四个对象的分析,再结合文件系统、设备驱动程序的内容,读者就可以具体分析自己感兴趣的相关内容。

Linux 在不断地发展,本书介绍的版本为 Linux 2.4.16。尽管本书力图反映 Linux 内核较本质的东西,但由于笔者的知识有限,对有些问题的理解难免有偏差,甚至可能有“Bug”,希望读者能尽可能多地发现它,以共同对本书进行改进和完善。

在本书的编写的过程中,笔者查阅了大量的资料,也阅读了大量的源代码,但本书中反映的内容也仅仅是 Linux 的主要内容。因为一本书的组织形成是一种线性结构,而知识本身的组织结构是一种树型结构,甚至是多线索的网状结构,因此,在本书的编写过程中,笔者深感书的表现能力非常有限,一本书根本无法囊括全部。在参考书目中,我们将给出主要的参考书及主要网站的相关内容。

本书的第一版是《Linux 操作系统内核分析》,在第一版的编写过程中,康华、季进宝、陈轶飞、张波、张蕾及胡清俊等参与了编写。第一版出版后得到了很多读者的充分肯定和赞扬,并授权台湾地区出版。在本次改版的过程中,依然保留了第一版的风格,但加深了对进程管理、内存管理及文件管理等众多内容的剖析。

这次改版由于时间仓促,加之作者的水平有限,书中有些术语的表达可能不妥,有些内容的分析也可能不够准确,敬请读者朋友批评指正。我的联系方式是:[email protected]

编者
2002 年 7 月