本书的起源

本书的起源

本书起源于1998年秋季,我们在卡内基-梅隆(CMU)大学开设的一门编号为15-213的介绍性课程:计算机系统导论(Introduction to Computer System,ICS)[14]。从那以后,每学期都开设了 ICS 这门课程,每学期有超过400名学生上课,这些学生从本科二年级到硕士研究生都有,所学专业也很广泛。这门课程是卡内基-梅隆大学计算机科学系(CS)以及电子和计算机工程系(ECE)所有本科生的必修课,也是 CS 和 ECE 大多数高级系统课程的先行必修课。

ICS 这门课程的宗旨是用一种不同的方式向学生介绍计算机。因为,我们的学生中几乎没有人有机会亲自去构造一个计算机系统。另一方面,大多数学生,甚至包括所有的计算机科学家和计算机工程师,也需要日常使用计算机和编写计算机程序。所以我们决定从程序员的角度来讲解系统,并采用这样的原则过滤要讲述的内容:我们只讨论那些影响用户级 C 语言程序的性能、正确性或实用性的主题。

比如,我们排除了诸如硬件加法器和总线设计这样的主题。虽然我们谈及了机器语言,但是重点并不在于如何手工编写汇编语言,而是关注 C 语言编译器是如何将 C 语言的结构翻译成机器代码的,包括编译器是如何翻译指针、循环、过程调用以及开关(switch)语句的。更进一步地,我们将更广泛和全盘地看待系统,包括硬件和系统软件,涵盖了包括链接、加载、进程、信号、性能优化、虚拟内存、I/O 以及网络与并发编程等在内的主题。

这种做法使得我们讲授 ICS 课程的方式对学生来讲既实用、具体,还能动手操作,同时也非常能调动学生的积极性。很快地,我们收到来自学生和教职工非常热烈而积极的反响,我们意识到卡内基-梅隆大学以外的其他人也可以从我们的方法中获益。因此,这本书从 ICS 课程的笔记中应运而生了,而现在我们对它做了修改,使之能够反映科学技术以及计算机系统实现中的变化和进步。

通过本书的多个版本和多种语言译本,ICS 和许多相似课程已经成为世界范围内数百所高校的计算机科学和计算机工程课程的一部分。