Computer Systems(Second Edition)

Randal E. Bryant, David R. O'Hallaron

出版时间

2010-02-14

ISBN

9780136108047

评分

★★★★★
书籍介绍
这不是一本让你'读懂'计算机系统的书,而是一本书把你逼到必须亲手触摸系统底层的地方。它最大的争议恰恰也是最大价值:作者坚持用C语言、坚持讲汇编、坚持让你去'under the hood'看现代计算机如何运作——哪怕这让你为垃圾回收、为补码转换、为流水线CPU实现熬上两个月。读者反复提及的'bomblab'不是点缀,而是整本书的缩影:它用一连串实验逼你亲手拆解、重构、优化,把'程序的正确性、性能与实用性'从抽象概念变成实打实的手感。它适合那些不愿停留在'会用电脑'、而想真正'驾驭电脑'的人;也提醒我们,理解系统不是为了造一台机器,而是为了写出更聪明的程序。
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..."
  • "我个人的经验是,有许多系统设计和概念,看似简单或不理解,可一旦自己动手做同样的试验,才明白当初设计者为什么要如此设计。计算机系统就像自然界的生态环境,对每一个部件的设计都要求它能够与系统其它部件和平相处,我们不能站在一个微观的视角去看待系统部件的设计是否最优,而应该从宏观来观察和思考"
下载
收藏