译者序

本书第 1 版出版于 2003 年,第 2 版出版于 2011 年,去年发行的已经是原书第 3 版了。第 3 版还是采用以下组合方式∶在经典的 x86 架构机器上运行 Linux 操作系统,采用 C 语言编程。这样的组合经受住了时间的考验。这一版的一个明显变化就是从讲解 IA32 和 x86-64 转变为完全以 x86-64 为基础,相应地修改了第 3、4、5、6 和 7 章。同时,还改写了第 2 章,使之更易读、好懂; 用近期的新技术更新了第 6、11 和 12 章。这些变化使得本书既和新技术保持了同步,又保留了描述系统本质的内容以及从程序员角度出发的特色。

除了翻译本书,我们也开始以本书为教材讲授 "计算机系统基础" 课程,对这本书的理解也随之越来越深人,意识到除了阅读之外,动手实践更是学习计算机系统的必经之路。本书的官网提供了很多实验作业(Lab Assignment),其中不乏有趣且有一定难度的实验,比如 Bomb Lab。有兴趣的读者除了阅读本书的内容之外,还应该试着去完成这些实验,让纸面上的内容在实际动手中得到巩固和加强。本书的官方博客也不断更新着有关这本书和配套课程的最新变化,这也是对本书的有益补充。

第 3 版从翻译的角度来说,我们尽量做到更流畅,更符合中文表达的习惯。对于一些术语,比如 memory,以前怕出错就统一翻译成存储器,现在则尽可能地按照语境去区分,翻译成内存或者存储器。 在此,要感谢本书的编辑朱劫、姚蕾以及和静,有她们的支持、鼓励和耐心细致的工作,才能让本书如期与读者见面。

由于本书内容多,翻译时间紧迫,尽管我们尽量做到认真仔细,但还是难以避免出现错误和不尽如人意的地方。在此欢迎广大读者批评指正。我们也会一如既往地维护勘误表,及时在网上更新,方便大家阅读。(另外,本版第 1 次印刷时,我们已经根据官网 2016 年 3 月 1 日前发布的勘误进行了修正,就不在中文勘误中再翻译了。)

龚奕利 贺莲

2016 年 5 月于珞珈山

最后更新于