Computer Systems: A Programmer's Perspective (3rd Edition)

Randal E. Bryant, David R. O'Hallaron

出版社

Pearson

出版时间

2015-03-12

ISBN

9780134092669

评分

★★★★★
AI导读
核心看点
  • 从程序员视角解析计算机系统底层原理
  • 涵盖数据表示、汇编、链接及虚拟内存
  • 深入讲解并发、网络与系统性能优化
适合谁读
  • 计算机专业本科生及研究生
  • 希望深入理解底层机制的程序员
  • 准备系统级开发或面试的求职者
读前提醒
  • 建议配合CMU课程视频与Lab练习
  • 前六章基础扎实,后半部分难度陡增
  • 动手实验是理解系统设计的最佳途径
读者共识
  • 被誉为计算机领域的神书与镇校教材
  • 内容广博且深入浅出,极具启发性
  • 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 received his bachelor’s degree from the University of Michigan in 1973 and then attended graduate school at the Massachusetts Institute of Technology, receiving his PhD degree in computer science in 1981. He spent three years as an assistant professor at the California Institute of Technology, and has been on the faculty at Carnegie Mellon since 1984. For five of those years he served as head of the Computer Science Department, and for ten of them he served as Dean of the School of Computer Science. He is currently a university professor of computer science. He also holds a courtesy appointment with the Department of Electrical and Computer Engineering. Professor Bryant has taught courses in computer systems at both the undergraduate and graduate level for around 40 years. Over many years of teaching computer architecture courses, he began shifting the focus from how computers are designed to how programmers can write more efficient and reliable programs if they understand the system better. Together with Professor O’Hallaron, he developed the course 15-213, Introduction to Computer Systems, at Carnegie Mellon that is the basis for this book. He has also taught courses in algorithms, programming, computer networking, distributed systems, and VLSI design. Most of Professor Bryant’s research concerns the design of software tools to help software and hardware designers verify the correctness of their systems. These include several types of simulators, as well as formal verification tools that prove the correctness of a design using mathematical methods. He has published over 150 technical papers. His research results are used by major computer manufacturers, including Intel, IBM, Fujitsu, and Microsoft. He has won several major awards for his research. These include two inventor recognition awards and a technical achievement award from the Semiconductor Research Corporation, the Kanellakis Theory and Practice Award from the Association for Computer Machinery (ACM), and the W. R. G. Baker Award, the Emmanuel Piore Award, the Phil Kaufman Award, and the A. Richard Newton Award from the Institute of Electrical and Electronics Engineers (IEEE). He is a fellow of both the ACM and the IEEE and a member of both the US National Academy of Engineering and the American Academy of Arts and Sciences. David R. O’Hallaron is a professor of computer science and electrical and computer engineering at Carnegie Mellon University. He received his PhD from the University of Virginia. He served as the director of Intel Labs, Pittsburgh, from 2007 to 2010. He has taught computer systems courses at the undergraduate and graduate levels for 20 years on such topics as computer architecture, introductory computer systems, parallel processor design, and Internet services. Together with Professor Bryant, he developed the course at Carnegie Mellon that led to this book. In 2004, he was awarded the Herbert Simon Award for Teaching Excellence by the CMU School of Computer Science, an award for which the winner is chosen based on a poll of the students. Professor O’Hallaron works in the area of computer systems, with specific interests in software systems for scientific computing, data-intensive computing, and virtualization. The best-known example of his work is the Quake project, an endeavor involving a group of computer scientists, civil engineers, and seismologists who have developed the ability to predict the motion of the ground during strong earthquakes. In 2003, Professor O’Hallaron and the other members of the Quake team won the Gordon Bell Prize, the top international prize in high-performance computing. His current work focuses on the notion of autograding, that is, programs that evaluate the quality of other programs.
用户评论
18600
读完这本书 走路也硬气了
前六章基本属于组原的内容,有很多精彩的部分。然而从第7章到第12章写了linking、OS、I/O、网络、并行编程,都是很难很晦涩的内容,可是作者的篇幅很短、没能够解释清楚。
所谓CMU镇校神课,多谢指教
绝对是世界上最好的计算机体系结构教材,非常适合自学,非常深入浅出,学得非常非常非常快乐,习题也好玩,lab更是好玩到爆表了。当然也是因为这课我遇到一个非常非常热情认真负责的教授就是了。比起主动找这本书来看的帽老婆我积极性还是差了些x 说到这门课,虽然期中考汇编时候掉血debuff加持+心态崩了考得一塌糊涂大概才排到中间=_=,但期末考CPU架构和虚拟内存是班级top10ᕙ( ͡° ͜ʖ ͡°)ᕗ作为外系的小垃圾考过了一堆计算机系学生还是有点骄傲的(说起来我还觉得我汇编学得更好一点啊= =难道是其他人硬件学得太烂了?) (Nov28 2019 Update) 读完了 还得反复看几遍
睡前安息读物
毕业之前要再读一遍
感谢陪伴
选材很好,但是作为一本入门书,写作技巧还不够好,很多地方也就是罗列
计算机神书,适合大一大二想要建立对计算机系统知识体系健全认知的学生,对今后学操作系统,数据库,计算机网络等课程都有帮助。这本书很厚可以跳着看,挑重点,我优先看cache,locality,malloc,link,network这几块知识
收藏