Linux内核内幕

作者:Phil Hughes

作者: Beck, Böhme, Dziadzka, Kunitz, Magnus, Verworner

出版社: Addison-Wesley

ISBN 0-201-87741-4

价格: $45.14 (包含光盘)

评论员: Phil Hughes

Linux Kernel Internals是1994年初以德语撰写和出版的书籍的英文翻译版。我立刻感到担忧,因为我读过一些从德语到英语的直译版本,它们很难理解。

幸运的是,我的担心是多余的。翻译工作非常出色,并且这本书的内容符合我对书名的期望。

如果您打算编写内核代码、内核模块,或者只是想了解Linux系统内核的工作方式,那么这本书是非常好的信息来源。此外,如果您想知道如何构建内核并理解您在做什么,理解文件系统、网络,甚至只是系统如何启动,这本书将回答您的问题。

当我阅读这本书来写这篇评论时,我发现自己放慢了速度,仔细地理解所有的Linux内核结构。信息就在那里,通过从头到尾阅读这本书,您将了解内核的所有信息。

另一方面,如果您只是想了解一些特定的功能——例如定时器中断如何工作,或者如何调试内核模块——这些信息也包含在内,并以易于查找、易于理解的方式呈现。但是,并不是太容易。也就是说,如果您不懂 C 语言,您将无法理解这本书的大部分内容。所呈现的信息是在代码级别,书籍中散布着代码片段。

在简要介绍了Linux的一般信息和编译内核之后,本书涵盖了重要的数据结构,如进程表,然后是inodes、内存管理和定时器。接下来,介绍了信号、中断、启动、调度器和系统调用的工作方式。甚至还有一个关于如何实现新的系统调用的章节。

接下来的五个章节处理系统的特定部分:内存管理、进程间通信、文件系统、设备驱动程序和网络实现。这些信息的呈现足够详细,可以阐明流程并使读者能够编写兼容的代码。关于文件系统的章节包括 proc 和 ext2 文件系统。

本书主要部分的最后一章是关于模块的,描述了什么是模块以及它们是如何实现的。文本提出了一个示例模块(PCMCIA 卡处理程序),并解释了如何调试模块。

本书以五个附录结尾。第一个附录详细介绍了系统调用,其方式与手册页的第 2 节非常相似,但调用是按区域(进程、文件系统等)而不是按字母顺序排序的。它还告诉您包含用于实现该函数的代码的文件在哪里。

第二个附录讨论了作者称之为“内核相关命令”的内容。这些包括 free、ps、rdev、top、init、shutdown、strace 和 mount 以及网络、串行和并行接口配置。

第三个附录讨论了 proc 文件系统。很多人没有意识到 proc 文件系统有多重要。这个简短(十页)的章节解释了它以及可以从中获得的重要信息。

最后的附录解释了启动过程,包括 MS-DOS 引导扇区和分区表,并讨论了 LILO,并解释了 LILO 启动错误(例如,当您只得到 LI 并且系统死机时)。

最后的附录介绍了“有用的内核函数”。这是对函数的解释,例如 printk(),可供编写内核代码的用户使用。

这本书有什么问题?

很少。我认为它在涵盖材料方面做得非常出色。它没有试图涵盖其主要重点之外的主题,我发现这是一个优点。

我看到的唯一缺点是它涵盖了 1.2 版本的内核,而不是 2.0。当然,目前,很难有一本涵盖 2.0 的书。 Addison-Wesley 可能会决定在下次印刷之前更新这本书。

总而言之,我强烈推荐这本书给任何认真编写内核代码或想知道 Linux 内核中有什么的人。

Phil Hughes 是 Linux Journal 的出版商。

加载 Disqus 评论