深入理解计算机系统(原书第3版)

Randal E.Bryant

出版时间

2016-11-01

ISBN

9787111544937

评分

★★★★★

标签

编程

书籍介绍
这本书最打动人的地方,是它让一个写Java、写Python的人重新'看见'自己写的程序。当你习惯了高级语言的舒适,猛然从底层回望,会惊觉那些'小数位丢失''有符号与无符号转换''指针为何总是出错'的困惑,原来都能在机器级找到答案。它不教你语法,而是把硬件、操作系统、编译器、网络编织成一整套可推演的框架,让你理解'程序究竟是如何在真实机器上跑起来的'。它适合那些不满足于'能用'、渴望打通任督二脉的程序员,也适合想系统了解计算机运作而非碎片知识的人。需要提醒:它偏厚偏难,习题与lab值得硬啃,但并非每一处都必学——学会取舍,本身也是读它的一部分收获。
作者简介
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卡内基梅隆大学电子和计算机工程系教授。在弗吉尼亚大学(University of Virginia)获得计算机科学的博士学位,2007年-2010年为Intel匹兹堡实验室主任。他教授本科生和研究生的计算机系统方面的课程已有20余年,并和Bryant教授一起开设了“计算机系统导论”课程。曾获得CMU计算机学院颁发的Herbert Simon杰出教学奖。他主要从事计算机系统领域的研究,与Quake项目成员一起获得过高性能计算领域中的*高国际奖项——Gordon Bell奖。他目前的工作重点是研究自动分级(autograding)概念,即评价其他程序质量的程序。
AI导读
核心看点
  • 以程序员视角串联硬件、OS与网络知识
  • 全面覆盖x86-64架构及底层运行机制
  • 配套经典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..."
  • "我个人的经验是,有许多系统设计和概念,看似简单或不理解,可一旦自己动手做同样的试验,才明白当初设计者为什么要如此设计。计算机系统就像自然界的生态环境,对每一个部件的设计都要求它能够与系统其它部件和平相处,我们不能站在一个微观的视角去看待系统部件的设计是否最优,而应该从宏观来观察和思考"
目录
出版者的话
中文版序一
中文版序二
译者序
前言

显示全部
用户评论
上学期的Computer System,这学期的concurrency、networking、database、OS,算是有一点程序员的样子了。脱了三四年的书算是结合颜神的笔记(https://yanmulin.me/)将将读完了。不过这本书的广度惊人,以后遇到相关领域还是得再读的。
我不知道大学老师又不会又为什么非要装逼不用这个教材,讲了四年的课连别人一本书的一个章节都不如。f**ing sl*t asshole. holy shit!
如果厨二经常说什么神作的话,这本书就是当之无愧的神作
看得比较粗,就是个全家桶,并没有特别深入吧,算是概论型,几乎每章都可以抽出来又是一本书
这是一本多么神奇的书呢? 无论我怎么看都像是新的
天书,太难懂了,看完书我只知道计算机是抽象出来的机器。
神作啊,给我们这种非科班出身的人来说补齐了很多计算机底层的知识
加油!
经典就是经典,我用了两个多月,全书通读了一遍,收获非常之大,也配合了B站up主做的一些整理,感谢~ 最后的并发那块讲得真的好,醍醐灌顶,茅塞顿开。 真的是一本不可多得的好书,常读常新,大家一起加油
真的是好书!翔实 自然 生动 底层逻辑讲得异常清晰
下载
收藏