第一图书网

深入理解计算机系统

Randal E.Bryant,David O'Hallaron 中国电力
出版时间:

2004-5-1  

出版社:

中国电力  

作者:

Randal E.Bryant,David O'Hallaron  

页数:

830  

译者:

龚奕利,雷迎春  

Tag标签:

无  

内容概要

  从程序员的视角,看计算机系统!  本书适用于那些想要写出更快、更可靠程序的程序员。通过掌握程序是如何映射到系统上,以及程序是如何执行的,读者能够更好的理解程序的行为为什么是这样的,以及效率低下是如何造成的。粗略来看,计算机系统包括处理器和存储器硬件、编译器、操作系统和网络互连环境。而通过程序员的视角,读者可以清晰地明白学习计算机系统的内部工作原理会对他们今后作为计算机科学研究者和工程师的工作有进一步的帮助。它还有助于为进一步学习计算机体系结构、操作系统、编译器和网络互连做好准备。  本书的主要论题包括:数据表示、C程序的机器级表示、处理器结构,程序优化、存储器层次结构、链接、异常控制流、虚拟存储器和存储器管理、系统级I/O、网络编程和并发编程。书中所覆盖的内容主要是这些方面是如何影响应用和系统程序员的。例如,在讲述数据表示时,本书说明了用来表示数字的表示方法是有限的,它能够近似地表示整数和实数,但是这种表示方法是有限制的,程序员必须了解。在讲述高速缓存时,本书讨论了矩阵代码中的循环变量的顺序是如何影响程序的性能的。在讨论网络互连时,本书描述了并发服务器如何能有效地处理来自多个客户端的请求。  本书基于Intel兼容(IA32)机器,在Unix或者相关的操作系统(例如,Linux)上执行C程序。虽然书中包括了一些帮助读者将Java转化成C的提示,但是还是要求读者对C或者C++有一定的了解。  您可以通过本书的Web网站获得完整的资料,包括实验和作业,授课笔记和代码示例。  本书英文版久负盛名,被众多专业人士称为“最伟大的计算机教材”之一,著名的美国卡内基梅隆大学计算机科学系一直将本书作为教材使用,程序员眼中的透彻讲述计算机系统的扛鼎之作。作者Randal E. Bryant是卡耐基梅隆大学的计算机科学系主任,ACM和IEEE双院士(Fellow),其研究成果多次获得ACM和IEEE颁发的大奖。  本书共分十三章,分别介绍了信息的表示和处理、程序的机器级表示、处理器体系结构、存储器层次结构、静态和动态链接、虚拟存储器、系统级I/O、网络编程和并发编程等精彩内容。其目的是解释计算机系统的所有本质概念,并向读者展示这些概念是如何实际地影响应用程序的正确性、性能和实用性。与其他主要针对系统构造人员的系统类书籍不同,这本书是写给程序员的,是从程序员的角度来描述的。本书为软件和硬件之间搭起了一个桥梁,它给出了一种帮助读者分别从硬件和软件的角度去理解一个程序及其行为的途径,这也填补了国内计算机系统教学中的一个空白。本书的最大优点是帮助读者理解概念,让读者很清楚地在脑海中构造一个层次型的计算机系统,从最低层数据在内存中的表示(如我们一直陌生的浮点数表示),到流水线指令的构成,到虚拟存储器,到编译系统,到动态加载库,到最后的用户应用。  本书提供了大量的例子和练习及部分答案。尤其值得一提的是,对于每一个基本概念都有相应的笔头或程序试验,加深读者的理解。

作者简介

  Randal E. Bryant 1973年获得密歇根大学(University of Michigan)学士学位,随即就读麻省理工学院(Massachusetts Institute of Technology)的研究生院,并在1981年获计算机博士学位。他在加州理工学院(California Institute of Technology)做了三年助教,从1984年至今一直是卡内基梅隆大学(Carnegie Mellon)的教师。他现在是计算机科学的主任级教授和计算机科学系的系主任。他同时还受邀于电子和计算机工程系。 他从事本科和研究生计算机系统方面课程的教学超过20年。在讲授计算机体系结构课程多年后,他开始把关注点从如何设计计算机转移到程序员如何在更好地了解系统的情况下编写出更有效和更可靠的程序。他和O’Hallaron教授一起在卡内基梅隆大学开设了“计算机系统导论”课程,那便是此书的基础。他还教授一些算法和编程方面的课程。 Bryant教授的研究涉及帮助硬件设计者验证其系统正确性的软件工具的设计。其中,包括几种类型的模拟器,以及用数学方法来证明设计正确性的形式化验证工具。他发表了100多篇技术论文。包括Intel、Motorola、IBM和Fujitsu在内的主要计算机制造商都使用他的研究成果。他还因他的研究获得过数项大奖。其中包括Semiconductor Research Corporation颁发的两个发明荣誉奖和一个技术成就奖,美国计算机学会(Association for Computer Machinery,ACM)颁发的Kanellakis理论与实践奖,还有电气和电子工程师协会(Institute of Electrical and Electronics Engineers,IEEE)授予的W. R. G. Baker奖和50年金质奖章(a Golden Jubilee Medal)。他同时是ACM和IEEE的院士。  David R. O’Hallaron 1986年在维吉尼亚大学(University of Virginia)获得计算机科学的博士学位。在通用电气工作一段时间后,于1989年作为系统科学家成为卡内基梅隆大学的教员。他目前是计算机科学系和电子及计算机工程系的副教授。 他教授一些本科生和研究生的计算机系统方面的课程,例如计算机体系结构、计算机系统绪论、并行处理器设计和Internet服务。和Bryant教授一起,他开设了“计算机系统导论”课程,那便是此书的基础。 O’Hallaron教授和他的学生从事计算机系统领域的研究。特别的,他们开发了一些软件系统,帮助科学家和工程师在计算机上模拟自然界。其中最著名的是Quake项目,一群计算机科学家、土木工程师和地震学家致力于在强烈地震中预测大地运动的能力,这些强烈地震包括南加洲、古巴、

书籍目录

译序关于术语的翻译前言关于作者第1章 计算机系统漫游1.1 信息就是比特+上下文1.2 程序被其他程序翻译成不同的格式1.3 了解编译系统如何工作是大有益处的1.4 处理器读并解释储存在存储器中的指令1.5 高速缓存1.6 形成层次结构的存储设备1.7 操作系统管理硬件1.8 利用网络系统和其他系统通信1.9 下一步1.10 小结第1部分 程序结构和执行第2章 信息的表示和处理2.1 信息存储2.2 整数表示2.3 整数运算2.4 浮点2.5 小结第3章 程序的机器级表示3.1 历史观点3.2 程序编码3.3 数据格式3.4 访问信息3.5 算术和逻辑操作3.6 控制3.7 过程3.8 数组分配和访问3.9 异类的数据结构3.10 对齐(alignment)3.11 综合:理解指针3.12 现实生活:使用GDB调试器3.13 存储器的越界引用和缓冲区溢出3.14 *浮点代码3.15 *在C程序中嵌入汇编代码3.16 小结第4章 处理器体系结构4.1 Y86指令集体系结构4.2 逻辑设计和硬件控制语言HCL 2714.3 Y86的顺序(sequential)实现4.4 流水线的通用原理4.5 Y86的流水线实现4.6 小结第5章 优化程序性能5.1 优化编译器的能力和局限性5.2 表示程序性能5.3 程序示例5.4 消除循环的低效率5.5 减少过程调用5.6 消除不必要的存储器引用5.7 理解现代处理器5.8 降低循环开销5.9 转换到指针代码5.10 提高并行性5.11 综合:优化合并代码的效果小结5.12 分支预测和预测错误处罚5.13 理解存储器性能5.14 现实生活:性能提高技术5.15 确认和消除性能瓶颈5.16 小结第6章 存储器层次结构6.1 存储技术6.2 局部性6.3 存储器层次结构6.4 高速缓冲存储器6.5 编写高速缓存友好的代码6.6 综合:高速缓存对程序性能的影响6.7 综合:利用你程序中的局部性6.8 小结第2部分 在系统上运行程序第7章 链接7.1 编译器驱动程序7.2 静态链接7.3 目标文件7.4 可重定位目标文件7.5 符号和符号表7.6 符号解析7.7 重定7.8 可执行目标文件7.9 加载可执行目标文件7.10 动态链接共享库7.11 从应用程序中加载和链接共享库7.12 *与位置无关的代码(PIC)7.13 处理目标文件的工具7.14 小结第8章 异常控制流8.1 异常8.2 进程8.3 系统调用和错误处理8.4 进程控制8.5 信号8.6 非本地跳转8.7 操作进程的工具8.8 小结第9章 测量程序执行时间9.1 计算机系统上的时间流9.2 通过间隔计数(interval counting)来测量时间9.3 周期计数器9.4 用周期计数器来测量程序执行时间9.5 于gettimeofday函数的测量9.6 综合:一个实验协议9.7 展望未来9.8 现实生活:K次最优测量方法9.9 得到的经验教训9.10 小结第10章 虚拟存储器10.1 物理和虚拟寻址10.2 地址空间10.3 VM作为缓存的工具10.4 VM作为存储器管理的工具10.5 VM作为存储器保护的工具10.6 地址翻译10.7 案例研究:Pentium/Linux存储器系统10.8 存储器映射10.9 动态存储器分配10.10 垃圾收集10.11 C程序中常见的与存储器有关的错误10.12扼要重述一些有关虚拟存储器的关键概念10.13 小结第3部分 程序间的交互和通信第11章 系统级I/O11.1 Unix I/O11.2 打开和关闭文件11.3 读和写文件11.4 用RIO包进行健壮地读和写11.5 读取文件元数据11.6 共享文件11.7 I/O重定向11.8 标准I/O11.9 综合:我该使用哪些I/O函数?11.10 小结第12章 网络编程12.1 客户端-服务器编程模型12.2 网络12.3 全球IP因特网12.4 套接字接口12.5 Web服务器12.6 综合:TINY Web服务器12.7 小结第13章 并发编程13.1 基于进程的并发编程13.2 基于I/O 多路复用的并发编程13.3 基于线程的并发编程13.4 多线程程序中的共享变量13.5 用信号量同步线程13.6 综合:基于预线程化的并发服务器13.7 其他并发性问题13.8 小结附录A 处理器控制逻辑的 HCL描述A.1 HCL参考手册A.2 SEQA.3 SEQ+A.4 PIPE附录B 错 误 处 理B.1 Unix系统中的错误处理B.2 错误处理包装函数B.3 csapp.h头文件B.4 csapp.c源文件参考文献索引

媒体关注与评论

  ·AMAZON五星图书,最伟大计算机科学教材之一;  ·卡耐基梅隆大学计算机学院院长,IEEE和ACM双院士倾力推出;  ·超过80所美国和世界一流大学计算机专业选用本书为教材。  本书被赞誉为价值超过等重量黄金的无价资源宝库;第一本将软件和硬件理论结合讲述的教程;覆盖计算机导论、体系结构和处理器设计等多门课程;经过大量学生使用,效果优秀,并获教师和学生一致推崇;完善的教学网站,为教师和学生提供在线支持。所有想写出更快、更可靠程序的开发人员必读之书!   


编辑推荐

  所有想写出更快、更可靠程序的开发人员必读之书!  ★ AMAZON五星图书,最伟大计算机科学教材之一  ★ 卡耐基梅隆大学计算机学院院长,IEEE和ACM双院士倾力推出  ★ 超过80所美国和世界一流大学计算机专业选用本书为教材  看看指导教师们是如何评价这本书的:  “我坚信从程序员的角度来看计算机系统对教会学生计算机的内部结构非常有帮助。”——Kostas Daniilidis,宾夕法尼亚大学  “这本书讲述事物的方法与众不同,但是和我想要的课程进行方式类似。”——John Greiner,Rice大学  “这是一项出色的工作,是这一领域教学方法的一次革命。”——Michael Scott,罗切斯特大学  作者Randal E. Bryant是卡耐基梅隆大学的计算机科学系主任,ACM和IEEE双院士(Fellow),其研究成果多次获得ACM和IEEE颁发的大奖。  本书提供了大量的例子和练习及部分答案。尤其值得一提的是,对于每一个基本概念都有相应的笔头或程序试验,加深读者的理解。

图书封面

图书标签Tags

广告

下载页面


深入理解计算机系统 PDF格式下载



相关图书