本版新增内容
本版新增内容
本书的第1版于2003年出版,第2版在2011年出版。考虑到计算机技术发展如此迅速,这本书的内容还算是保持得很好。事实证明 Intel x86 的机器上运行 Linux(以及相关操作系统),加上采用 C 语言编程,是一种能够涵盖当今许多系统的组合。然而,硬件技术、编译器和程序库接口的变化,以及很多教师教授这些内容的经验,都促使我们做了大量的修改。
第2版以来的最大整体变化是,我们的介绍从以 IA32 和 x86-64 为基础,转变为完全以 x86-64 为基础。这种重心的转移影响了很多章节的内容。下面列出一些明显的变化:
- 第1章。我们将第5章对 Amdahl 定理的讨论移到了本章。
- 第2章。读者和评论家的反馈是一致的,本章的一些内容有点令人不知所措。因此,我们澄清了一些知识点,用更加数学的方式来描述,使得这些内容更容易理解。这使得读者能先略过数学细节,获得高层次的总体概念,然后回过头来进行更细致深入的阅读。
- 第3章。我们将之前基于 IA32 和 x86-64 的表现形式转换为完全基于 x86-64,还更新了近期版本 GCC 产生的代码。其结果是大量的重写工作,包括修改了一些概念提出的顺序。同时,我们还首次介绍了对处理浮点数据的程序的机器级支持。由于历史原因,我们给出了一个网络旁注描述 IA32 机器码。
- 第4章。我们将之前基于32位架构的处理器设计修改为支持64位字和操作的设计。
- 第5章。我们更新了内容以反映最近几代 x86-64 处理器的性能。通过引入更多的功能单元和更复杂的控制逻辑,我们开发的基于程序数据流表示的程序性能模型,其性能预测变得比之前更加可靠。
- 第6章。我们对内容进行了更新,以反映更多的近期技术。
- 第7章。针对 x86-64,我们重写了本章,扩充了关于用 GOT 和 PLT 创建位置无关代码的讨论,新增了一节描述更加强大的链接技术,比如库打桩。
- 第8章。我们增加了对信号处理程序更细致的描述,包括异步信号安全的函数,编写信号处理程序的具体指导原则,以及用
sigsuspend等待处理程序。 - 第9章。本章变化不大。
- 第10章。我们新增了一节说明文件和文件的层次结构,除此之外,本章的变化不大。
- 第11章。我们介绍了采用最新
getaddrinfo和getnameinfo函数的、与协议无关和线程安全的网络编程,取代过时的、不可重入的gethostbyname和gethostbyaddr函数。 - 第12章。我们扩充了利用线程级并行性使得程序在多核机器上更快运行的内容。
此外,我们还增加和修改了很多练习题和家庭作业。