深入理解计算机系统(英文版·第3版)

[美] Randal E. Bryant

出版时间

2017-04-01

ISBN

9787111561279

评分

★★★★★

标签

编程

书籍介绍
这本书最打动人的地方,是它坚持从程序员的角度重新解释计算机系统:程序究竟是如何一步步映射到硬件上、又是如何被真正执行的。它不满足于告诉你“怎么用”,而是逼你去理解“为什么会这样”——缓存为何影响性能、链接如何动态加载函数、补码与无符号转换为何在某区间完全等价。读者反复提到的,正是这种“看懂之后效率自然提升”的通透感:它适合愿意从底向上、或从执行细节反推设计的人。但它的争议也同样明显:内容密度极高、理解难度极大,有人直言“用书本学这种方式效率极差”,也有人需要把它当作融会贯通的最后一环。因此它更像一块需要反复咀嚼的基石,而非一蹴而就的入门快览。
作者简介
Randal E. Bryant,1981年于麻省理工学院获得计算机博士学位,1984年至今任教于卡内基-梅隆大学。现任卡内基-梅隆大学计算机科学学院院长、教授,同时还受邀任教于电子和计算机工程系。他从事本科生和研究生计算机系统方面课程的教学近40年,和O’Hallaron教授一起在卡内基-梅隆大学开设了15-213课程“计算机系统导论”,那便是本书的基础。他还是ACM院士、IEEE院士、美国国家工程院院士和美国人文与科学研究院院士。其研究成果被Intel、IBM、Fujitsu和Microsoft等主要计算机制造商使用,他还因研究获得过Semiconductor Research Corporation、ACM、IEEE颁发的多项大奖。 David R. O’Hallaron,卡内基-梅隆大学电子和计算机工程系教授。在弗吉尼亚大学获得计算机科学的博士学位,2007年-2010年为Intel匹兹堡实验室主任。他教授本科生和研究生的计算机系统方面的课程已有20余年,并和Bryant教授一起教授“计算机系统导论”课程。曾获得卡内基-梅隆大学计算机学院颁发的Herbert Simon杰出教学奖。他主要从事计算机系统领域的研究,与Quake项目成员一起获得过高性能计算领域中的*高国际奖项——Gordon Bell奖。他目前的工作重点是研究自动分级(autograding)概念,即评价其他程序质量的程序。
AI导读
核心看点
  • 以程序员视角解析软硬件交互
  • 涵盖数据表示、汇编、体系结构
  • 深入讲解链接、虚拟内存与并发
读者共识
  • 计算机领域经典必读基石
  • 理论清晰,醍醐灌顶
  • 英文版阅读门槛较高
精彩摘录
  • "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..."
  • "我个人的经验是,有许多系统设计和概念,看似简单或不理解,可一旦自己动手做同样的试验,才明白当初设计者为什么要如此设计。计算机系统就像自然界的生态环境,对每一个部件的设计都要求它能够与系统其它部件和平相处,我们不能站在一个微观的视角去看待系统部件的设计是否最优,而应该从宏观来观察和思考"
目录
Preface xix
About the Authors xxxv
1 A Tour of Computer Systems 1
1.1 Information Is Bits + Context 3
1.2 Programs Are Translated by Other Programs into Different Forms 4

显示全部
用户评论
英文版的这本书是我读过的晦涩的一本书,每天看4个小时,每天只能看10面,没有翻译版本的pdf会更难理解,看了半个月,只差不多刚完成第二章。看来豆瓣的程序员也是人均英语托福水平了,个个看得这么流畅。:)
introduction to computer systems
计算机系统基石,常读常新。
看不下去了,还回图书馆了。能看的动这本书的都是大佬啊,都是大佬。
怎么说呢,我一个控制工程的搞上了工控软件开发,喜欢上上C语言和计算机,这本书很受用
感觉也没那么神
必看书目
配合课程一起服用,要做lab哦
下载
收藏