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

[美] Randal E. Bryant

出版时间

2017-04-01

ISBN

9787111561279

评分

★★★★★

标签

编程

书籍介绍

本书是一本将计算机软件和硬件理论结合讲述的经典教材,内容涵盖计算机导论、体系结构和处理器设计等多门课程。本书*大的特点是为程序员描述计算机系统的实现细节,通过描述程序是如何映射到系统上,以及程序是如何执行的,使读者更好地理解程序的行为,找到程序效率低下的原因。

和第二版相比,本版内容上最大的变化是,从以IA32和x86-64为基础转变为完全以x86-64为基础。主要更新如下:

· 基于x86-64,大量地重写代码,首次介绍对处理浮点数据的程序的机器级支持。

· 处理器体系结构修改为支持64位字和操作的设计。

· 引入更多的功能单元和更复杂的控制逻辑,使基于程序数据流表示的程序性能模型预测更加可靠。

· 扩充关于用GOT和PLT创建与位置无关代码的讨论,描述了更加强大的链接技术(比如库打桩)。

· 增加了对信号处理程序更细致的描述,包括异步信号安全的函数等。

· 采用最新函数,更新了与协议无关和线程安全的网络编程。

【特别说明:原出版社授权影印版权时,明确规定不能加参考文献和索引,前言及目录也要翻译为中文,因此本书影印版与原书仍然有所不同】

AI导读
核心看点
  • 以程序员视角解析软硬件交互
  • 涵盖数据表示、汇编、体系结构
  • 深入讲解链接、虚拟内存与并发
适合谁读
  • 计算机专业学生及从业者
  • 希望优化程序性能的开发者
  • 对底层原理有强烈好奇者
读前提醒
  • 建议配合CMU课程Lab练习
  • 影印版无索引,查阅不便
  • 内容硬核,需耐心啃读
读者共识
  • 计算机领域经典必读基石
  • 理论清晰,醍醐灌顶
  • 英文版阅读门槛较高

本导读基于书籍简介、目录、原文摘录、短评和书评生成,不等同于全文精读。

精彩摘录
  • "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..."
  • "我个人的经验是,有许多系统设计和概念,看似简单或不理解,可一旦自己动手做同样的试验,才明白当初设计者为什么要如此设计。计算机系统就像自然界的生态环境,对每一个部件的设计都要求它能够与系统其它部件和平相处,我们不能站在一个微观的视角去看待系统部件的设计是否最优,而应该从宏观来观察和思考"
作者简介
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)概念,即评价其他程序质量的程序。
目录
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哦
下载
收藏