深入理解计算机系统(原书第2版)
2010年
机械工业出版社
(美)Randal E.Bryant,David O'Hallaron
702
龚奕利,雷迎春
无
本书通过程序员的视角来介绍计算机系统,首先把高级语言转换成计算机所能理解的一种中间格式(如汇编语言),然后描述计算机如何解释和执行这些中间格式的程序,系统的哪一部分影响程序的执行效率。在讲述计算机系统知识的同时,也给出了关于C语言和汇编语言的编程、阅读技巧以及基本的系统编程工具,还给出一些方法帮助程序员基于对计算机系统的理解来改善程序的性能等问题。本书强调对计算机系统概念的理解,但并不意味着不动手。如果按照本书的安排做每一章后面的习题,将有助于加深对正文所述概念和知识的理解,更可以从实际动手中学习到新的知识。本书的主要内容是关于计算机体系结构与编译器和操作系统的交互,包括:数据表示,汇编语言和汇编级计算机体系结构,处理器设计,程序的性能度量和优化,程序的加载器、链接器和编译器,I/O和设备的存储器层次结构,虚拟存储器,外部存储管理,中断、信号和进程控制。本书的最大优点是为程序员描述计算机系统的实现细节,帮助其在大脑中构造一个层次型的计算机系统,从最底层的数据在内存中的表示(如大多数程序员一直陌生或疑惑的浮点数表示),到流水线指令的构成,到虚拟存储器,到编译系统,到动态加载库,到最后的用户态应用。贯串本书的一条主线是使程序员在设计程序时,能充分意识到计算机系统的重要性,建立起所写程序可能被执行的数据或指令流图,明白执行程序时到底发生了什么事,从而能设计出高效、可移植、健壮的程序,并能够更快地对程序排错、改进程序性能等。原书是卡内基-梅隆大学(CMU)的教材,现在很多国内外著名的大学也选用其作为教材或辅助性资料,因此,本书的读者不仅仅是那些因为工作和兴趣而关注本书的人,还包括一些在校的大学生。我们认为,在校学生越早接触本书的内容,将越有利于他们学习计算机的相关课程,培养对计算机系统的研究兴趣。总的来说,本书是一座桥梁,它帮助程序员衔接了计算机系统各个领域的知识,为程序员构造了一个概念性框架。要想获取更多关于计算机系统结构、操作系统、编译器、网络、并发编程方面的知识,还需要进一步阅读相关书籍。
本书从程序员的视角详细阐述计算机系统的本质概念,并展示这些概念如何实实在在地影响应用程序的正确性、性能和实用性。全书共12章,主要内容包括信息的表示和处理、程序的机器级表示、处理器体系结构、优化程序性能、存储器层次结构、链接、异常控制流、虚拟存储器、系统级i/o、网络编程、并发编程等。书中提供子大量的例子和练习题,并给出部分答案,有助于读者加深对正文所述概念和知识的理解。
本书适合作为高等院校计算机及相关专业本科牛、研究生的教材,也可供想要写出更快、更可靠程序的程序员及专业技术人员参考。
Randal E. Bryant 1973年于密歇根大学(University of
Michigan)获得学士学位,随即就读于麻省理工学院(Massachusetts Institute of
Technology)的研究生院,并在1981年获计算机博士学位。他在加州理工学院(California Institute of
Technology)做了三年助教,从1984年
第1章 计算机系统漫游
第一部分 程序结构和执行
第2章 信息的表示和处理
第3章 程序的机器级表示
第4章 处理器体系结构
第5章 优化程序性能
第6章 存储器层次结构
第二部分 在系统上运行程序
第7章 链接
第8章 异常控制流
第9章 虚拟存储器
第三部分 程序间的交互和通信
第10章 系统级i/o
第11章 网络编程
第12章 并发编程
附录a 错误处理
参考文献
插图:1.9 重要主题在此,总结一下我们旋风式的系统漫游。这次讨论得出一个很重要的观点,那就是系统不仅仅只是硬件。系统是硬件和系统软件互相交织的集合体,它们必须共同协作以达到运行应用程序的最终目的。本书的余下部分会讲述硬件和软件的详细内容,通过了解这些详细内容,你可以写出更快速、更可靠和更安全的程序。我们在此强调几个贯穿计算机系统所有方面的重要概念作为本章的结束。我们还会在本书中的多处讨论这些概念的重要性。1.9.1 并发和并行数字计算机的整个历史中,有两个需求是驱动进步的持续动力:一个是我们想要计算机做得更多,另一个是我们想要计算机运行得更快。当处理器同时能够做更多事情时,这两个因素都会改进。我们用的术语并发(concurrency)是一个通用的概念,指一个同时具有多个活动的系统;而术语并行(parallelism)指的是用并发使一个系统运行得更快。并行可以在计算机系统的多个抽象层次上运用。在此,我们按照系统层次结构中由高到低的顺序重点强调三个层次。1.线程级并发构建进程这个抽象,我们能够设计出同时执行多个程序的系统,这就导致了并发。使用线程,我们甚至能够在一个进程中执行多个控制流。从20世纪60年代初期出现时间共享以来,计算机系统中就开始有了对并发执行的支持。传统意义上,这种并发执行只是模拟出来的,是通过使一台计算机在它正在执行的进程间快速切换的方式实现的,就好像一个杂技演员保持多个球在空中飞舞。这种并发形式允许多个用户同时与系统交互,例如,当许多人想要从一个Web服务器获取页面时。它还允许一个用户同时从事多个任务,例如,在一个窗口中开启Web浏览器,在另一窗口中运行字处理器,同时又播放音乐。在以前,即使处理器必须在多个任务间切换,大多数实际的计算也都是由一个处理器来完成的。这种配置称为单处理器系统。
“2005年,我开始采用Bryant和O’Hallaron的这本书作为本科生计算机系统课程的教材。现今,这本书仍然是我的计算机系统课程教科书的首选。” ——Mirela Damian,维拉诺瓦大学 “本书表述清晰、恰到好处——举重若轻地呈现了那些非常复杂的内容。” ——Ibrahim Matta,波士顿大学 “这是一本学习计算机硬件和软件如何‘真正’协同工作的好书,还教会你为什么了解这些知识会使你成为一个更有价值的程序员。本书还帮你为学习像操作系统和编译器这样的高级课程做好准备。在本书中,我最喜欢的章节是关于缓存的,当我第一次发现缓存有多重要时,真是难以置信!” ——Vishal Shah,Ask.com总架构师
《深入理解计算机系统》:计算机科学丛书。
无
第一章,讲程序是如何在计算机上运行,通过图文进行讲解,让读者更加容易对程序的执行过程有一个全局的了解,为后续的章节知识做铺垫(估计),对于那些对程序是如何在底层运行不是很清晰的程序员,此章很有用!
第二章,讲信息的表示和处理,其实说白了就是讲解二进制和十六进制的一些运算,其中穿插有一些练习题和一些程序的小技巧,例如:不用临时变量进行整数的交换。此章有一些推导公式,显得比较冗长沉闷,但是章节开头就教你怎样阅读此章,先是跳过推导过程,做给出的练习题,后面再回来看推导过程。
此书的阅读起点不高,只要有一些C语言背景知识就可以阅读了,对于计算机专业的课程更是一个完整的总结!
强烈推荐购买!
本书事无巨细地将与计算机系统相关的知识一并倾囊相授。仅仅一本书中,包括了计算机体系,编译原理,汇编技术,网络接口等相关方面最重要的内容。对于立志成为程序员或已经成为程序员的IT同行们,是以部重基础与实践并重的经典宝书。对于我们计算机院的研究生而言,如果本科基础不牢固,或是实践经历不够充足的,有其是有类似于我这样转专业经历的研究生,这本书是通向职场的不二法门。
如果大学只能带走一本书的话,我选择这本。
这是本很有趣的书,了解计算机底层技术是件极富挑战同趣味的事情。
大二以后基本没再阅读过哲学历史文学方面的书籍,因为这样的书籍足以给人带来极大乐趣。
个人认为这样的书籍,计科专业的本科学生越早接触越好,它会让你比别人更早拥有一个系统的计算机知识,更能触类旁通。
如果想从事底层开发或在Linux平台下开发,这本书是很好的选择。
另外,这本书的翻译纸张都很不错,很多的词汇译者都在前面做了说明。
这是为数不多让人不抱怨翻译的技术书籍,如果英文不过硬,看中文版也是很享受的一件事情。
聪明的你会喜欢这本书的。
我对“深入理解计算机系统(原书第2版..”这本书非常满意,因为它对我的学习非常有帮助。
经典书籍,你想要了解的都在这里面。计算机组成原理,操作系统,编程,汇编,linux等相关知识都有,是一本不可多得的好书,比国内许多教材好多了。什么时候国内有人也能写出这种书,就牛X了。建议慢慢品读,讲的知识很有深度。
深入理解计算机系统,确实做到了由浅入深了解计算机原理和结构。只有从硬件上理解计算机,知道它的运行原理,才能写出性能最优的程序。
目前在学习某工科专业,想系统的学习下计算机方面的知识。
硬的方面自然准备看这本书了。
软的方面还要了解数据结构,算法,当然还需要掌握一门面向对象的语言和脚本语言,了解数据库编程等等。
从学计算机的兄弟那儿索取了书单,觉得压力相当大啊。
看《程序员的自我修养——链接、装载与库》中对该书的评价:“该书对整个计算机软硬件体系结构进行了深入浅出的介绍,是理解计算机系统底层不可多得的好书。”后决定买的。
正如前面有读者所说的,有了这本书,大学计算机其他专业书都可以扔掉了,但愿这本黄金级的书能带我步入计算机系统的大门!
一本值得花时间认真研究的好书!从计算机的软硬件机理来分析计算机的运行,从本质上提交程序编写的质量。此书可以帮助程序员提高一个层次!
当翻开这本书以后,就体会到爱不释手的涵义了,本书从程序开始讲起,将整个计算机的体系结构全部呈现在读者面前,由浅入深,丝丝入口,什么时候中国也有那样的学者写出这样的教材!
作为电子信息专业的,书中的很多计算机有关概念感觉很遥远。但是仔细读了一小节描述的确实够深入,不留死角。难怪大学老师建议大家读书还是读外文原版。老外的书写的就是好。翻译过来也还行啊
也是一个偶然的机会才在别人的书桌上随便翻开看看的。结果一发不可收拾,现在自己花了RMB72购入囊中,列入珍藏的书目中了。正如英文的原名所叙述的,from a programmer’s perspective, 故名思义,就是从程序员的视角来看待一个计算机系统。现有的一些计算机原理书,往往过于偏硬,什么门电路啊、译码器啊......
这本书我买来一个月了。由于之前看过前两章,觉得很好。但看到第三章得时候卡住了——不懂汇编。于是为了读这本书,专门花了半个月学了一下GAS。然后才买的书。
这本书无需我多言,的确是好书。但我想说的是就我这一个月以来的阅读经验,来谈谈对这本书的看法。
我觉得这本书最适合我的是第三、五、七、八、九章。尤其是第三章,读完之后,让你再看见C程序的时候,就会知道所以然了,因为你已经知道C程序对应的底层汇编了。至于第五章,我只是看了一部分,不便发表评论。第七章也很好,讲的是Linux下的C程序的链接过程。这对理解LinuxC程序的连接过程、内存分布、执行过程都有很清晰的脉络,建议学嵌入式的朋友一定要好好读读这章。第八章讲的是异常,也看了一部分,和另外一本经典APUE相比,说的有点简单。不过已经不错了,毕竟这本其实是概览类得书籍。然后是第九章,个人觉得这一章是除了第三章以外,写的最好的一章。之前我对ARM的MMU不是很理解,因为国内的书的通病就是除了摘抄,没有自己的东西,讲不好。等我耐心地看完第九章再去看看ARM的MMU,突然就豁然开朗了。真是感谢这本书。本书的第三部分,个人感觉一般,毕竟说得有点简单。如果想看这方面的内容,建议阅读APUE。
书名翻译的太唬人了,其实应该是《计算机系统:程序员视角》。现在才刚看到第四章,应该对自己将来的发展有好处。建议学计算机专业或者相关的都看一看
从程序猿的角度看计算机,里面涉及了操作系统,组成原理等计算机主干基础学科,把知识点都给串联起来了,看了以后受益匪浅。推荐
在程序的角度帮助大家理解计算机系统
站在程序员的角度理解计算机底层原理,有了这一本书就能满足买其他书
实在精彩,以程序员角度探讨计算机结构,特别是汇编那章,讲得很过瘾,值得一看再看的书
确实是一本不错的书,值得一读,涉及到的方面非常多,包括计算机体系,编译原理,汇编技术等,非常经典。
通读本书,可以让您回顾历史踪迹,清晰前进方向。正如本书附页所言其和《算法导论》并称计算机世界的圣经,哪个计算机程序员没有读过此书正如基督徒没有读过圣经一样,只有空洞的崇拜,没有虔诚的信仰
这本书应该类似与国内大学的计算机组成原理这门课,这本书更侧重于软件,组成原理更侧重于硬件。书的内容充实,讲述的比较清楚,配图也易懂无歧义,推荐计算机特别是软件专业的同学读一下
对那些想探究计算机程序深层运作原理的读者,是一部不可多得的经典之作。
内容翔实,翻译得不错,现代计算机系统的许多概念和理论是从Unix发展来的,
学习Unix及Linux是理解操作系统的基础,万变不离其宗。
不用说了,计算机行业人员必读书籍,对于了解计算机来说是最好的入门书。该书堪称经典之作,做活动时买的5折,而且还用了优惠券。挺值的,买书还是当当划算,这个无容置疑!
非常到位,甚至讲到计算机数据为何这么设计,深入操作系统的必读经典,相比国内的许多教材,还是有难度,建议属于扩展阅读!
从一个程序员的角度详细阐述了计算机系统的方方面面,很好看。
读了一学期了,这本书能够让你知道一个程序从编辑好之后是怎么在计算机内捣腾捣腾完了,然后输出hello world的
要做一个踏踏实实的coder,这本书也是相当值得推荐的
很全面地讲解计算机系统地运行原理,不过有一定难度,需要一些编程基础!
本来这本书很好,但是翻译的人水平太差了,错误很多,而且很多地方感觉翻译者计算机水平很差。另外印刷的也有问题,我给机械工业出版社的人发邮件都没回复我,非常没有责任心,以后再也不买机械工业出版社的书了.
但是这都不能掩盖原书的精确。
讲解的非常细致,非常适合当一本工具书使用。
适合有一定计算机编程、硬件及网络知识基础的人阅读。
从程序员角度深刻理解计算机技术,一本好书,值得一读
机械工业出版社 纸张太差!
一本针对计算机硬件结构的说,正如书宣传所说,搭配《算法导论》,是非常完美的搭配
不管是计算机学科还是其他学科,都很缺乏这样一本贯穿整个学科系统的好书。这样一本书的诞生,无疑需要作者有丰富的阅历和实践经验,以及严谨的学术态度。作为计算机相关专业的学生,能够有幸阅读这样一部著作,我感到万分兴奋。这本书能带给读者开阔的视野,使读者阅读后能够将学科能容贯通起来,形成完整的理解。真个阅读过程能够不断给你带来醍醐灌顶的感觉。
这是一本计算机领域的人都应该看的书
能够让程序员写出更高质量的代码
详解计算机系统,帮助很大 对编程的提高也很大 推荐
本书可以说是计算机科学的集大成作品之一。每章都已犀利的视角剖析了计算机的结构层次。是一本需要反复研读的经典
刚到手仔细翻了翻,这是操作系统、体系结构、算法、网络等很多门课的融合体,确实是一本经典的牛书,读下来肯定有困难,不过如果有时间,我会尽力去读
本书作者写明了对象为:计算机科学家 和 软件工程师....但也不妨针对想成为以上的人...再好的书也不会减少内容本书的难度,对于偶一个非计算机的工科专业...一小节值得看一下午...这是一本值得反复品位的书...一遍估计都不够..不知道一年能不能看完.曾经买过一本软件工程..计算接科学丛书 觉得 没5年开发经验别看...果断垫书桌角....本来也是从事这个工作,仅仅对IT感兴趣而已!
本来是准备卖计算机操作系统的书,结果买了本计算机系统,刚看了前几章.
学计算机的人必读,不仅对编程技术有帮助,对你的思维方式也会产生有益的影响,这很重要。
书很好,是系统理解计算机的好书,很赞
站在程序员的角度讲解计算机系统,真的很不错啊
理解计算机工作原理的经典书籍,我最先读的章节是 链接和加载 这一章 恍然大悟啊!强烈推荐
卡内基梅隆的教科书,世界级的cs课程指定计算机原理书籍,对于系统和底层的认识非常深刻!
写过一段时间的代码,遇到问题Google、百度也能解决,但总感觉心里没底,对计算机的基本原理了解不多。这本书事先试读过一段时间的电子版,主要从C语言的角度去理解计算机的原理,感觉很清晰!是本入门的好书!
书的内容由浅入深、由表及里、讲解详细,用词准确,又比较通俗,个人认为是认识计算机系统的一本好书,必备的。
深入理解计算机系统中的经典书籍,非常好。收藏
当计算机走进千家万户,当计算机成为最稀松平常的事物,而计算机系统到底是怎么回事,还是看看本书中的讲解。
内容比较基础,适合于大众,但凡想知道计算机的,都可以拿来看看。
本书更适合有一定计算机理论的人士学习。
适合计算机专业的学生或者从事计算机行业的人士,从底层到上层对计算机系统都有了比较详细的介绍,在找工作的过程中对我帮助不少。
这是一本很好的书,可以让你对计算机系统有更加深入地了解,推荐
书的质量还不错,没得说。书也比较厚,得慢慢看,慢慢细读~
才看了前几章,感觉以前学的一些东西都忘了,相信看过之后会对计算机系统有个更深刻的了解
曾经看过一个所谓的“计算机必读的10本书”,深入理解计算机系统,是其中之一,总觉得在这个行当里面待了这么长时间了,然而对全局还没有个把我,空荡荡的,拿这本书补充一下,也算是个安慰。
处理器,存储器,虚拟存储器,网络,并发章节对理解整机的运行比较好,比较实用
说的很细,说的很简单。会让你想彻底去掌握书中的所有知识.很好很好.计算机专业的都应该去细读吧。
对这本书仰慕已久!!机械工业出版的计算机丛书还是相当给力的!!这本书是流传已久的经典,程序员必读!包装不错,纸质还行,要是英语好,看原版就更赞了!!
这书非常好,通俗易懂,适合刚刚开始学计算机的人。不过当当的平邮不敢恭维,下次要用EMS吧!用平邮时间久不说,而且书损坏很严重,书的封面都皱了,唉!大家买的时候小心选择邮递方式吧!
一直知道程序的性能是靠一点点优化出来的,也知道在开发中要使用恰当的数据类型,但为什么恰当的数据类型能提升程序的性能?
这是第一次看到能告诉为什么恰当的类型会让程序更快的书,也许是以前看书没有细看?原来数据的存储是这么回事,也许越往后面看越会有更深的体会?!!!
一切都值得期待
对理解计算机系统和代码在系统中运行有了更深入的了解!
计算机系统深入理解哦
涉及计算机很多方面的知识,对编程很有帮助!
这本书是一位牛人推荐给我的 翻看了几页 感觉确实是很经典的计算机图书
这本书怎么能算经典呢?
必须是经典中的经典!
读完以后会对软硬件如何交互有很深的理解,同时也比较通俗易懂,是不可多得的好书!
和《CLRS》并称为计算机科学的圣经,毫不为过!
第1次网购计算机专业书籍,从订书到收到,只用了不到25小时。速度真的很快。
粗粗的看了下,书的纸质偏薄,比较容易透页看到页背面的内容。因为价格优惠,也将就了。
希望质量更上一层楼。
作为一名程序员不得不看的一本好书,能让你更清楚地了解系统,写出更好的程序,力荐此书
是深入了解计算机系统的好书啊。值得一读。
深入浅出,很好。能够很深刻理解计算机系统
书不错,计算机类中很经典的一本书,随便翻了翻还行,抽空自信研读一下
经典书了,值得所有学习计算机的人读
很经典的一本计算机方面的书,值得一读
推荐阅读,计算机专业的值得一看,很好的基础书
计算机专业专用书
书的内容是公认的,当当书的质量也不错,他的价值最主要还是看自己怎么利用。刚买来,决定认真看,这东西不容易学,但学进去以后肯定是另外一种境界。熟练掌握编程语言只能算是刀剑,要想登峰造极必须要练好内功心法。
知识太多了,篇幅也很长,看来要慢慢读好好消化消化。这本书差不多读完理解了,对计算机了解估计有一个质的飞跃。
很好的书,实际是讲系统对写程序的影响的,程序本身写得不多,许多是针对unix系统而言的
作者以深厚的功力和教学过程中的实战经验,生动、详尽地描述了整个计算机系统,
一路读下来,酣畅淋漓,真的是有醍醐灌顶的感觉,结合APUE相信效果会更好。
有计算机基础的人看非常合适,翻译的也不错!
没有基础的看也很有意思,不错的书,能够把计算机的哲学阐述的比较清楚。
对计算机系统有了深入的了解和认识。
与计算机体系结构量化研究方法各有侧重,值得一读
以前从来没有听说过这些书,自从知道了这些经典书的存在后,我一口气买了八本。代码大全是我开始看的第一本,非常非常赞,书中讲的编程思想特别实用,特别中肯。以前我以为编码是件随意的事情,是要靠自己去悟的(⊙﹏⊙b汗),开始看这本书之后,觉得编码不是那么简单的,它所涵盖的内容方方面面,借鉴别人强大的编程技术,比自己苦苦思索要实惠多了。书中讲的每句话都值得仔细推敲,并不是看完就可以放一边了,而要自己去思考,去实践,去总结。真正把书中讲的知识放进自己的“工具箱”,用的时候能信手拈来。这就是我一个菜鸟的想法,希望自己的技术能快快提高~Fighting!
恩 不愧为内功心法。好书,很详细的讲述了计算机的系统的底层 ,受益匪浅。
这本书很经典,虽然我还没怎么看,而且我的方向是****,可能对我来说实用性不是很大,但我还是买了,一个原因是因为不想错过经典的计算机书籍,另一个是我相信这对我以后的发展也是有好处的
拿到手后太喜欢了,慢慢研究,虽然有点难懂。但是毕竟是经典。买计算机书就要买国外的。
书是计算机经典,但印刷得不行,纸张太薄,有些地方字迹不清
学习计算机必不可少的经典图书,本书讲的非常仔细。
对于计算机的学生来说,一本好书,那是一副良药,是前行的明灯。这本书系统全面的让我了解了计算机的内在,培养了兴趣。
这本书解决了我很多疑问,对于计算机系统的了解 有很很大的进步
这本书是计算机领域的一本很有名气的书,我们老师也极力推荐。慢慢看。
确实比较经典 不过比较适合计算机专业或者有一定基础的人学 不然会有很多地方看不懂
这本书是一本非常值得一读的好书,希望计算机专业的学生读一读。
都是关于系统的知识,没有计算机的基础真是看不懂,我是没看懂,在一点点的研究吧
书肯定是好的了,著作嘛,就是要具备些基础的计算机知识
如果你对这方面感兴趣就买吧
绝对经典的计算机科学名著,每个学计算机的都应该读这本书
学习计算机系统必读书籍,内容全面,新颖,有深度,大师的著作,值得拜读!
里面的内容很详细 但是也很全面,学长很推荐这本书 想学计算机的一定要买来看看啊
适合想了解整个计算机体系的人阅读
计算机经典图书。发货很快。质量不错。
看看计算机系统里面是如何运行的.这本没得说.
好书,独到的角度来讲计算机系统
学计算机的,值得一看的书