作为12月初的开篇大戏,我将总结一下再次阅读《深入理解计算机系统》的感觉。
《深入理解计算机系统》这本书真不知道用什么修饰来形容它比较好。它是计算机专业的必读之书;它是一本难得的好书;它的价值超越了同等重量的黄金;它将带领你走向程序员“大牛”之道;等等,这些赞美之词都不为过。然而,我更喜欢下面的一个说法:当我毕业搬家时,在众多的书籍中只能带走一本的话,我会毫不犹豫地选择它——《深入理解计算机系统》。
下面将一步一步走向计算机的天堂。
第一章:计算机系统漫游。它仅仅通过最简单的“hello world”程序,就让我们了解一个程序是怎么创建,怎么编译,怎么执行的,它让我们知道了在程序运行的过程中,计算机系统是怎么一个状况。真正应了书名《从程序员的视角看计算机系统》,而且起点很低,往往引入入胜,流连忘返。
第二章:信息的表示与处理。在这一方面,我觉得本书突出的重点非常好:无符号和二进制补码。这两种数据表示对我们程序员的影响比较大,因为他们经常出现,而且经常给我们带来迷惑。在看这一章的时候,我恰好在同步看《java puzzlers》这本书,而这本java解惑里面涉及了很多的关于数据表示的问题,比如各种符号的转换、扩展、截断等等。而本书恰好给出的很多参考。
第三章:程序的机器级表示。这一章几乎是一种教授逆向工程的方法在讲授,剖析编译器产生的汇编代码,以此来加深对具体代码实现的理解。通过学习这一章,我们很容易理解程序在机器上如何表示的。然而,本书主要是针对c程序员的,所以对于学习java的我来说,只能起到一个借鉴的作用了。
第四章:处理器体系结构。这一章主要讲述设计模拟CPU来着,过于偏硬,对于刚开始学的人来说,可以先跳过。不过,我觉得这一章还是要看的,而且是重点看!毕竟,cpu、内存及IO是计算机系统三个最核心的概念了。了解了CPU,才能更加深刻地了解它是如何控制计算机执行程序的。
第五章:优化程序性能;第六章:存储器层次结构;第七章:链接;第十章:虚拟存储器;这四章可以说是本书的精华中的精华!应该一个字一个字把它们啃透。“优化程序性能”是全书最闪光的章节。作者对一个例子不断优化,讲循环效率和过程调用,到讲存储器引用,一直讲到现代处理器的结构,讲到IA32处理器的局限,一路下来,畅快淋漓。“存储器层次结构”实际上可以看作是“优化程序性能”一章的延伸,以及为之后的“虚拟存储器”做铺垫。这章主要详细解释了高速缓存(cache)的工作方式,以及利用局部性使得cache达到最好效果的方法。其实我觉得它在考试或者面试时作用会更加大吧!链接的重要程度就更不用说了。而“虚拟存储器”(Virtual Memory)则上升到了操作系统层面,详细解析了VM的实现以及Linux系统上VM组织方式。说句令不好意思的话,以前一直不知道“虚拟存储器”是啥玩意,有什么用,呵呵!不过,我觉得最受用的是malloc/free实现的动态存储器分配的具体方法以及对进程中具体存储结构的了解,还有GC的策略。记得学操作系统时,我们背了很多内存分配策略,比如首次适配、最佳适配等等,释放内存时的四种合并情况啦,这些概念过了一段时间就忘了。现在,你自己把它们实现了的时候,才知道malloc、free原来是这样子的。这让我想起了一句话:源码面前,了无秘密呀!
而对于第十一章:系统级I/O;第十二章:网络编程;第十三章:并发编程,这三章并非本书的重点,讲述的也不是很多。但我读完这几章后确是这样一种感觉:留下来的都是精华呀!
遨游了一遍,最后谈一下本书的书名吧!《深入理解计算机系统》,一听此名,吓走了不少人。本人在此隆重保证,本书很“简单”!只要有c语言及汇编的经验就可以看了,而且内容覆盖比较广,把程序执行时所涉及到的计算机组成原理、操作系统、编译原理等整合了起来。通篇讲得还是比较基础的,没有“深入”之说。所以,书的名字确实有点不符,《以程序员的视角看计算机系统》更形象吧!但名字不好听,中国人不仅在乎内在美,外在美也很受关注呀!at last,不能认为读完了本书,自己就是“大牛”了。须知,后面的路还很长,还需要一步一步地走。。。
前几天到网上一查,《深入理解计算机系统》第二版出来啦!郁闷!我的才买,就出新书了。看了一下,把修改的部分贴一下
《深入理解计算机系统》从第一版到第二版,已经是七年的时光了。由于计算机技术的飞速发展,第二版相对于第一版做了大量的修改。首先,针对硬件技术和编译器技术的变化,第二版对系统的介绍,特别是实际使用部分,做了增加和修改。例如,既保持了原有的针对 32 位系统的说明,又增加了对 64 位系统的描述。其次,第二版增加了很多关于由算术运算溢出以及缓冲区溢出造成安全漏洞的内容。第三,更详细讲述了处理器对异常的发现和处理,这是计算机系统中的一个重点和难点。第四,对存储器的描述改为了基于 Intel Core i7 处理器的存储器层次结构,还增加了固态硬盘的内容。第五,强调了并发性,并发性既体现在处理器的实现中,也体现在应用程序编程中。
最后,看了一下书的封面,恩,不喜欢!还是我的这本好,呵呵。。。