深入理解计算机系统

Randal E.Bryant

出版时间

2004-04-30

ISBN

9787508321752

评分

★★★★★

标签

科学

书籍介绍
这是一本让程序员'看见'自己写的代码究竟在机器上发生了什么的书。它不满足于告诉你C语言的语法,而是带你深入数据如何被编码为位、程序如何被翻译成指令、循环变量顺序为何会影响缓存命中、一个缓冲区越界又如何被利用——这些'知道'与'不知道'之间,正是平庸程序与高效程序的分野。读者最看重的,是它把处理器、存储器、编译器、操作系统、网络编织成一张相互协作的整体图景,而非孤立的知识块。它适合那些不满足于'程序能跑就行'、渴望理解性能瓶颈从何而来的人;也适合想为体系结构、编译、OS等后续学习打下根基的读者。它偏底层、偏硬核,习题颇具挑战,但正是这种'登堂入室'的深度,让它成为系统级编程领域难以替代的经典。
作者简介
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项目,一群计算机科学家、土木工程师和地震学家致力于在强烈地震中预测大地运动的能力,这些强烈地震包括南加洲、古巴、日本、墨西哥和新西兰的大地震。同Quake项目中其它人员一起,他获得了CMU计算机科学院颁发的Allen Newell优秀研究奖章。他为Quake项目创立的基准程序,183.equake,被SPEC(Standards Performance Evaluation Corporation)选入非常有影响的SPEC CPU和OMP(Open Mp)基准程序包中。
AI导读
核心看点
  • 从程序员视角剖析计算机系统,打通软硬件壁垒。
  • 涵盖数据表示、处理器、链接、异常控制流等核心。
  • CMU经典教材,被誉为计算机领域最伟大的教材之一。
读者共识
  • 计算机科学的登堂入室之作,必读经典教材。
  • 虽被称深入,实为优秀入门书,构建宏观系统观。
  • 阅读门槛高,需耐心钻研,但回报巨大,受益匪浅。
精彩摘录
  • "We use the term concurrency to refer to the general concept of a system with multiple, simultaneous activities, and the term parallelism to refer to the use of concurrency to make a system run faster."
  • "图5-22展示了做 k 次循环展开和 k 路并行变换的效果,k 最大为 6。我们可以看到,随着 k 值的增加,所有合并情况的 CPE 都增加了。对于整数乘法和浮点数运算,我们看到 CPE 的值为 L/k,这里 L 是操作的延迟,最高可以得到吞吐量界限 1.00。我们还看到使用标准的展开,整数加法也达到了这个界限。"
  • "总结一下,我们考虑无符号与补码表示之间互相转换的结果。对于在$0 \le x \le 2^{w-1}$范围内的值$x$而言,我们得到$T2U_w(x)=x$和$U2T_w(x)=x$。也就是说,在这个范围内的数字有相同的无符号和补码表示。对于这个范围意外的数值,转换需要加上或者减去$2^w$。"
  • "C语言是系统级编程的首选,同时它也非常适用于应用级程序的编写。然而,它也并非适用于所有的程序员和所有的情况。C的指针是造成困惑和程序错误的一个常见原因。同时,C还缺乏对一些有用抽象的显式支持,例如类、对象和异常。"
  • "This book is written for a programmer's perspective, describing how application programmers can use their knowledge of a system to write better programs."
  • "Building high-performance Web servers.Many Web servers generate dynamic content, such as personalized Web pages, account balances, and banner ads. Early Web servers generated dynamic content by using fork and execve to create a child process and run a “CGI program” in the context of the child. Howev"
  • "But if we had a 32-bit address space, 4KB pages, and a 4-byte PTE[page table entry, 杨注], then we would need a 4MB page table resident in memory at all time..."
  • "我个人的经验是,有许多系统设计和概念,看似简单或不理解,可一旦自己动手做同样的试验,才明白当初设计者为什么要如此设计。计算机系统就像自然界的生态环境,对每一个部件的设计都要求它能够与系统其它部件和平相处,我们不能站在一个微观的视角去看待系统部件的设计是否最优,而应该从宏观来观察和思考"
目录
出版说明
关于第二次印刷的几点说明
译 序
关于术语的翻译
在第二次印刷中一些重要术语的修订

显示全部
用户评论
新的26天计划开始....done
即使以后不做IT了,这本书还是希望能多读几遍
第一部分:一绪论;二三章每本书都写可它讲的最数学;第四五章连带附录A是这本书中最有难度也最有趣的部分,示例连贯数据清晰;第六章,存储层次内容少还比较旧。第二部分:第七章繁琐复杂;第十章和第六章合并好些;第三部分:非精华部分可以略读。PS:据说这书出第二版了~
作者是大牛来着 断断续续有看~ 但没有很系统很深入很全面滴看过……
没有那么多闲情逸致再钻研底层知识了,这本书图书馆借了几次,不过都没有翻完1/10.不知是悲哀还是庆幸。
我所看过的最好的计算机书籍,对整个计算机体系结构有很好的描述与理解
#本科教材 经典不解释
中间部分,很难再逐字逐句啃了。但是还是要反复拿出来回顾一下。这本书会让你知道很多计算机的本质,程序的本质。你实现的程序是如何被实现的。
讲述计算机系统的底层实现原理,最好对C或者C++语言要有所了解,要不然从理论到理论,容易放弃
啥都不說了 謝謝這本書的存在 @2019-11-19 11:06:54
下载
收藏