深入理解计算机系统(程序员的观点)
《深入理解计算机系统》是一本相当有名的计算机书籍,语言浅显易懂而且是从最基本的说起,有希望成为我有生之年第一本读完的专业外文书籍 ,只需要有基本的数学思维和对计算机编程的兴趣就可以读懂.
所有想写出更快、更可靠程序的开发人员必读之书!
★ AMAZON五星图书,最伟大计算机科学教材之一
★ 卡耐基梅隆大学计算机学院院长,IEEE和ACM双院士倾力推出
★ 超过80所美国和世界一流大学计算机专业选用本书为教材
看看指导教师们是如何评价这本书的:
“我坚信从程序员的角度来看计算机系统对教会学生计算机的内部结构非常有帮助。”——Kostas Daniilidis,宾夕法尼亚大学
“这本书讲述事物的方法与众不同,但是和我想要的课程进行方式类似。”——John Greiner,Rice大学
“这是一项出色的工作,是这一领域教学方法的一次革命。”——Michael Scott,罗切斯特大学
作者Randal E. Bryant是卡耐基梅隆大学的计算机科学系主任,ACM和IEEE双院士(Fellow),其研究成果多次获得ACM和IEEE颁发的大奖。
本书提供了大量的例子和练习及部分答案。尤其值得一提的是,对于每一个基本概念都有相应的笔头或程序试验,加深读者的理解。
《深入理解计算机系统》适合那些想要写出更快、更可靠程序的程序员阅读。通过掌握程序是如何映射到系统上,以及程序是如何执行的,读者能够更好地理解程序的行为为什么是这样的,以及效率低下是如何造成的。粗略来看,计算机系统包括处理器和存储器硬件、编译器、操作系统及网络互联环境。而通过程序员的视角,读者可以深深地体会到学习计算机系统的内部工作原理会对他们今后作为计算机科学研究者和工程师的工作有进一步的帮助。它还有助于为进一步学习计算机体系结构、操作系统、编译器和网络互联打下基础。
《深入理解计算机系统》的主要论题包括:数据表示、C程序的机器级表示、处理器结构、程序优化、存储器层次结构、链接、异常控制流、虚拟存储器和存储器管理、系统级 I/O、网络编程和并发编程。书中所覆盖的内容主要讲述这些方面是如何影响应用和系统程序员的。例如,在讲述数据表示时,本书提出了用来表示数字的表示方法是有限的,它能够近似地表示整数和实数,但是这种表示方法是有限制的,程序员必须了解。在讲述高速缓存时,本书讨论了矩阵代码中的循环变量的顺序是如何影响程序的性能的。在讨论网络互联时,本书描述了并发服务器如何有效地处理来自多个客户端的请求。
《深入理解计算机系统》基于Intel兼容(IA32)机器,在Unix或者相关的操作系统(例如Linux)上执行C程序。虽然书中包括了一些帮助读者将Java转化成C的提示,但还是要求读者对C或者C++有一定的了解。
·《深入理解计算机系统》被赞誉为价值超过等重量共金的无价资源宝库
·第一本将软件和硬件理论结合讲述的教程
·覆盖计算机导论、体系结构和处理器设计等多门课程
·经过大量学生使用,效果优秀,并获教师和学生一致推崇
·完善的教学网站,为教师和学生提供在线支持
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 syste