Computer Systems: A Programmer’s Perspective

中文名:
深入理解计算机系统
作者:
兰德尔·E·布莱恩特 Randal E. Bryant
收藏和分享深入理解计算机系统:
深入理解计算机系统(Computer Systems: A Programmer’s Perspective)简介:

A PROGRAMMER'S PERSPECTIVE

This book is for programmers who want to write faster and more reliable programs. By learning how programs are mapped onto the system and executed, readers will better understand why programs behave the way they do and how inefficiencies arise. Computer systems are viewed broadly, comprising processor and memory hardware, compiler, operating system, and networking environment. With its programmer's perspective, readers can clearly see how learning about the inner workings of computer systems will help their further development as computer scientists and engineers. It also helps prepare them for further study in computer architecture, operating systems, compilers, and networking.

Topics include: data representations, machine-level representations of C programs, processor architecture, program optimization, memory hierarchy, linking, exceptional control flow, virtual memory and memory management, system-level 1/O, network programming, and concurrent programming. The coverage focuses on how these areas affect application and system programmers. For example, when covering data representations, it considers how the finite representations used to represent numbers can approximate integer and real numbers, but with limitations that must be understood by programmers. When covering caching, it discusses how the ordering of loop indices in matrix code can affect program performance. When covering networking, it describes how a concurrent server can efficiently handle requests from multiple clients.

The book is based on Intel-compatible (IA32) machines executing C programs on Unix or related operating systems such as Linux. Some familiarity with C or C++ is assumed, although hints are included to help readers making the transition from Java to C.

A complete set of resources, including labs and assignments, lecture notes, and code examples are available via the book's Web site at csapp.cs.cmu.edu.

“我坚信从程序员的角度来看计算机系统对教会学生们计算机的内部结构非常有帮助。” ——Kostas Daniilidis,宾夕法尼亚大学
“这本书讲述事物的方法与众不同,但是和我想要的课程进行方式类似。” ——John Greiner,Rice大学
“这是一项出色的工作,是这一领域教学方法的一次革命。” ——Michael Scott,罗切斯特大学

程序员的视角
本书适合那些想要写出更快、更可靠程序的程序员阅读。通过掌握程序是如何映射到系统上,以及程序是如何执行的,读者能够更好地理解程序的行为为什么是这样的,以及效率低下是如何造成的。粗略来看,计算机系统包括处理器和存储器硬件、编译器、操作系统及网络互联环境。而通过程序员的视角,读者可以深深地体会到学习计算机系统的内部工作原理会对他们今后作为计算机科学研究者和工程师的工作有进一步的帮助。它还有助于为进一步学习计算机体系结构、操作系统、编译器和网络互联打下基础。

本书的主要论题包括:数据表示、C程序的机器级表示、处理器结构、程序优化、存储器层次结构、链接、异常控制流、虚拟存储器和存储器管理、系统级I/O、网络编程和并发编程。书中所覆盖的内容主要讲述这些方面是如何影响应用和系统程序员的。例如,在讲述数据表示时,本书提出了用来表示数字的表示方法是有限的,它能够近似地表示整数和实数,但是这种表示方法是有限制的,程序员必须了解。在讲述高速缓存时,本书讨论了矩阵代码中的循环变量的顺序是如何影响程序的性能的。在讨论网络互联时,本书描述了并发服务器如何有效地处理来自多个客户端的请求。

本书被赞誉为价值超过等重量共金的无价资源宝库
第一本将软件和硬件理论结合讲述的教程
覆盖计算机导论、体系结构和处理器设计等多门课程

这本书的最大的特色在于它将体系结构,编译,OS结合起来讲,使人产生对系统的俯瞰的感觉,对于那些想深入理解计算机内部工作机理的人,这几乎是最佳的一本书。

深入理解计算机》是一个桥梁,它帮我们找到一种途径使上层应用和底层的硬件实现保持一种联系。当你真的很理解《深入理解计算机系统》中的内容的时候,自然也就想看更深的内容(也就是说,你该买pattern的书了)。

Randal E. Bryant,是计算机届的一位老前辈,他主写的《深入理解计算机系统》是他深厚的计算机技术沉淀后的精华,概念浅显易懂。希望在40岁以前还能碰到这样一本能让我心动的书。呵呵,40岁以后,自己就要开始学习沉淀了。我个人觉得,书的作用可以帮你迅速熟悉一个领域,帮你去了解这个领域的概念。如果你能通过一本书,去区分混淆的概念,就非常好。要想深入下去,Paper和Maillist是必不可少的。我是很喜欢读Maillist,那些作者都是一线工作的战士,他们讨论的问题是书和Paper上没有涉及到的,有时候是会颠覆我们的固有看法。98年、99年和00年,我就是通过读maillist熟悉Linux kernel的。呵呵,现在市面上有大量的关于Linux kernel的书,但书上大都告诉你的是“它就是这样设计的”,而不会去讨论“它为什么这样设计”。你发现这个现象了吗?所以,即使我们看完一本Linux Kernel的书,也只是知道一些东西,而很少获得它存在的理由,和别的一些实现选择。我想说的是在mailinglist中可以找到许多书本中没有的threads,这些threads可能不是很严谨,但确实能告诉我们他们为什么这样设计,他们做了那些考虑,我觉得这很重要。

尤其是第4章和5章的知识,不可能让初学者弄懂 这本书难度系数很高,并不是向书上说的只要会点C就可以了的
”深入理解“ 应该还是恰如其分的。 比如 降到程序链接那块, 很多书里面都讲的不深或干脆不讲。 强烈推荐。

兰德尔·E·布莱恩特的作品

下载地址

  • 本书版权归原作者所有,本站暂无下载,请购买正版!
  • 深入理解计算机系统 Computer Systems: A Programmer’s Perspective

    推荐书籍

    排行书籍