其实我们无论是科班出身的计算机学生还是半路出家的计算机大神,在学习的过程中好的书籍选择也许会让你事半功倍。
今天要和大家分享一本在豆瓣被赐予9.8分的圣书,‘CMU’的计算机导论教材的《深入理解计算机系统》
说这本书之前,先来讨论一个问题,从键入一条命令到计算机给出结果,这中间的过程是怎样的,你知道么?
其实简单来说呢,当你键入一条命令的时候,计算机首先要做的就是把你的语言转成机器语言,让电脑能读懂,再执行你想要的操作,下图我们以最简单的“hello world”的C语言编译为例:
当然这只是通俗来讲,实际上编译流程复杂的多,还包括预处理阶段、编译阶段、汇编阶段、以及链接等阶段,而这正是本书的重点内容,所以,如果你想对计算机系统的有更深入认识和了解,不妨看看。
《深入理解计算机系统》原书第2版
本书特点:
● 豆瓣评分9.9的“神书”,计算机书籍类最高分
● 全面基于X86-64位处理器
● 第二版销售突破100000册
● 卡内基-梅隆、北京大学、清华大学、上海交通大学等知名高校指定教材
这本书只为说明一个问题:一个程序从编译到运行都发生了什么
本书的最大优点是为程序员描述计算机系统的实现细节,帮助其在大脑中构造一个层次型的计算机系统,从最底层的数据在内存中的表示到流水线指令的构成,到虚拟存储器,到编译系统,到动态加载库,到最后的用户态应用。通过掌握程序是如何映射到系统上,以及程序是如何执行的,读者能够更好地理解程序的行为为什么是这样的,以及效率低下是如何造成的。
《深入理解计算机系统》如今已经到第3版了,第1版于2003年出版,第2版于2011年出版,如今计算机发展十分迅猛,但本书的口碑依然不减,第三版豆瓣评分高达9.9,这得益于书中内容依然能涵盖当前的绝大多数系统。
阅读路线
第3版的内容核心从以IA32和x86-64为基础,转变为完全以x86-64为基础。这样的改版,内容结构上和第2版必然会产生出入,下面我们详细了解了各章节内容:
第一章:计算机系统漫游,通过任何编程书里都作为第一个程序的”hello world“来分析了整个软件硬件系统。
第二章:信息的表示和处理,这章主要涉及到一些数据类型,如整数、浮点数等的二进制表示,不过有读者反应看完之后有些迷茫,建议你读到这章的时候先放下其中的数学细节之后在回过头来读就会豁然开朗了
第三章:程序的机器级表示,在这一章还首次介绍了对处理浮点数据的程序的机器级支持。
第四章:处理器体系结构,重点介绍了CPU的指令集、流水线等
第五章:优化程序性能,着重反映最近几代x86-64处理器的性能给出多个基于程序数据流表示的程序性能模型,其性能预测十分可靠
第六章:存储器的层次结构,着重讲两极高速缓存的原理以及高速缓存级别的代码优化
第七章:链接
第八章:异常控制流,从底层硬件到高层语言,每一级别都有异常,如何处理这些异常,就是这一章节所要描述的
第九章:虚拟内存,这一章节介绍利用虚拟内存作为缓存的工具,并举了两个案例Core i7地址翻译和Linux虚拟内存系统
第十章:系统级I/O
注意:
不得不再次提醒大家的是,本书重点执行x86-64机器代码的系统,内容直接适用于诸如Solaris、FreeBSD和MacOS X这些“类Unix”操作系统,假如你对C或者C++有一定了解,那么读起这本书来,相对会更顺畅,如果你使用的是Java,你可能要多花点时间完成两者之间的转换。
但是假如你平常使用的是Python、Ruby或Perl,那你最好先学习一些基础的C语言知识在来读这本书。通俗一点说,如果你想要读这本书,那么最好先具备C语言基础。
读者书评
@DreamAndDead:编程人应人手一本的五星好书,习题非常值得一做
@匿名:计算机专业的必读之书,无论是初学者入门也好,技术人员温故也好,都是不错的选择。
@匿名:这本书,毋庸置疑,是业界的良心之作,典藏名著!
@Dr.Wang :“覆盖面广”,其实就是这本书的最大优点。它告诉我们计算机是如何设计和工作的,操作系统有哪些重点,它们的作用又是什么。CSAPP的目标其实便是要讲清楚原理,但并不会把某个话题挖掘地过于深入,过于细节。看看这本书后,我们就可以对计算机系统各组件的工作方式有了理性的认识。
@懒猫:这是本很有趣的书,了解计算机底层技术是件极富挑战同趣味的事情。大二以后基本没再阅读过哲学历史文学方面的书籍,因为这样的书籍足以给人带来极大乐趣。
其他计算机系统好书
1、《计算机体系结构量化研究方法》
2、《计算机组成与设计:硬件/软件接口》
3、《计算机系统概论》
4、《计算机程序的构造和解释》
如果你还有读过其他计算机系统相关的好书,也可以留言告诉我们。
●编号315,输入编号直达本文
●输入m获取到文章目录
领取专属 10元无门槛券
私享最新 技术干货