Linux 内核内部原理,第二版

作者:Karl Majer
Linux Kernel Internals, Second Edition
  • 作者:Michael Beck, Harold Bohme, Mirko Dziadzka, Ulrich Kunitz, Robert Magnus, Dirk Verworner

  • 出版社:Addison-Wesley

  • 电子邮件:info@awl.com

  • 网址:http://www.awl.com/

  • 价格:45 美元

  • ISBN:0-201-33143-8

  • 评论员:Karl Majer

Linux 内核内部原理 是一本关于 2.0 内核内部运作的出色著作。它非常深入且细致地涵盖了内核的各个方面。

本书首先介绍了 Linux,然后引导读者了解构建内核的方法。 接着向读者介绍了内核本身的基元、数据结构、算法和系统调用。 至此,用户应该对内核的基础知识有合理的理解。

作者的讨论随后转移到 Linux 内核中的内存管理。 本节首先介绍了独立于体系结构的内存管理。 关于 Linux 内存管理的其他关注点包括 proc 文件系统的虚拟地址空间分配、内核选择的块设备缓存方法以及 Linux 内核分页的方式。

进程间通信是下一个主题。 读者将学习内核同步其各个部分之间通信的方法。 简要讨论了通过文件、套接字和管道进行的通信。

接下来,介绍了 Linux 文件系统。 描述了文件系统的基础知识,以及内核如何看待文件系统。 紧随其后的是 Linux proc 文件系统的实现,最后深入探讨了 EXT2 文件系统的运作方式。

如果没有设备驱动程序来允许最终用户连接和使用他可能拥有的任何其他设备,操作系统将是不完整的。 本书深入介绍了字符设备和轮询设备,然后继续解释了编写轮询设备驱动程序与中断驱动设备驱动程序之间的区别。 然后,引导用户完成一个关于实现设备驱动程序来操作 PC 扬声器的教程。

Linux 操作系统真正的乐趣之一是其固有的和原生的网络支持。 与其他非 UNIX 操作系统不同,Linux 完全有能力在不安装特殊软件的情况下使用网络服务。 Linux 内核在非常低的级别处理通信,本书深入讨论了这一点以及内核对网络设备的处理。 还讨论了各种通信协议,即 IP、TCP、UDP、ARP 以及它们的实现方式。

为了使 Linux 内核支持设备、协议甚至另一个处理器,内核必须通过包含支持这些项目所需的源代码来“了解”这些内容。 虽然这并非特别困难,但它确实增加了在内存中运行的内核的大小。 开发了一种方法,内核可以通过该方法仅加载操作所需的必要对象,也称为模块。

可以从本书中关于模块的精彩章节中获得对内核中模块的介绍。 讨论涵盖了诸如可以制成模块的内核对象类型,以及内核守护进程(在内存中运行并处理模块动态使用的程序)等项目。 最后,还有一个关于模块实际编写和调试的精美教程。

鉴于当今组件的可用性和低成本,人们自然希望在他们的计算机中使用多个处理器。 尽管令人失望地简短,但本书中包含了一个关于 SMP(对称多处理)的章节。 虽然本节确实包含大量信息,但它相对稀疏且以英特尔为中心。

在主要讨论结束时,本书提供了四个附录,其中包含大量信息。 详细讨论了 Linux 程序员可用的每个系统调用,以及所有与获取内核信息相关的命令。 深入研究了 proc 文件系统以及它可以提供的有关正在运行的内核的信息。 最后,读者可以很好地了解启动过程以及启动 Linux 系统所涉及的一切。

总而言之,Linux 内核内部原理 是一本非常好的书,可以进行关于内核的高级、深入阅读。 唯一的缺点是其基于英特尔的倾向,虽然可以接受,但并不能体现 Linux 最强大的功能——它能够在许多新旧硬件平台上运行,例如 DEC Alpha、Sun SPARCs、Macintosh 和 SGI。

Karl Majer 目前是 America Online 的 UNIX 系统管理员。 在他的空闲时间里,他喜欢与家人共度时光、编程、阅读和推广 Linux。 欢迎发送电子邮件至 majer@bitbucket.org 与他联系。

加载 Disqus 评论