当前位置:首页 > 公众号精选 > 程序喵大人
[导读]导读:如果你也读CS专业,如果你也不知道怎么回答“学计算机不就是学修电脑”这个CS系的宿命之问,推荐一定读一读《深入理解计算机系统》。《深入理解计算机系统》是一本什么样的书呢?两个字,经典。原因有二,第一,这书无数业界大牛推荐,第二,这书和你印象中的经典一样,给人的第一感觉就是厚...


导读:如果你也读CS专业,如果你也不知道怎么回答“学计算机不就是学修电脑”这个CS系的宿命之问,推荐一定读一读《深入理解计算机系统》。

《深入理解计算机系统》是一本什么样的书呢?两个字,经典。原因有二,第一,这书无数业界大牛推荐,第二,这书和你印象中的经典一样,给人的第一感觉就是厚实。不过,厚实也很容易再给人一种感觉,那就是望而却步——你没准会想,这么厚的书,又是经典,是不是很难读?


大可放心,一点也不会。


经典也是有细分领域的,有很多书之所以经典,是因为对一些问题进行了很深入的探讨,而《深入理解计算机系统》的经典,我认为是把计算机中被分割成很多块的知识,用一本书一口气完整地全部整理出来。


1《深入理解计算机系统》为什么经典

我们先回想一下,计算机专业都开设有哪些专业课。首先肯定有编程,这个专业很大一部分工作是要给码农培养接班人。编程的一个重要环节是编译,那设计编译器要开一门课,叫编译原理。编译完了要运行,运行需要依赖硬件环境和软件环境,于是就有了计算机组成原理和操作系统。如果早个二三十年,计算机的知识体系到这就差不多了,不过现在可是网络时代,所以还得再加一门课,叫计算机网络。这还是往大了分,细分就更多了,光编程语言就有好几种,而且别忘了背后还有一堆的各种数学,就不细说了。


计算机技术蓬勃发展,学科体系自然枝繁叶茂,但学计算机很容易就像在追冰与火之歌一样,世界观太宏大支线剧情太多,眼前很难呈现出一幅完整的图景。所以当时我们学各门学科的时候,大家问的最多的不是学科本身的某个知识点,而是“为什么要学这门课”。刚才我把各个主要科目串了一串,读完应该会对各科之间的关系有一个更宏观的了解。


可是,光有这么一句话肯定还有很多问题没法解决。有没有一本书专从这个角度讲计算机科学呢?计算机科学有很多经典的书,但大多数都是专注各个领域的内部知识,不过好在还真有一本经典的书,是从计算机的角度来看待计算机,这就是《深入理解计算机系统》。


我当初读《深入理解计算机系统》,读完就是一个感觉,淋漓畅快。感觉脑子里很多零星的碎片,读完以后都拼在了一起。《深入理解计算机系统》书很厚,讲的也深入,但深入的是知识点与知识点之间的关联,也许很多正好都是你深感困扰的问题,读完很容易让你有种“哦,原来是这样”的感叹,节省了很多去苦苦思索的时间。写本文的时候我特意看了一下大家对《深入理解计算机系统》的书评,果然很多人感受和我一样,相见恨晚。


2《深入理解计算机系统》都写了什么


《深入理解计算机系统》这本书起源于卡内基梅隆大学(CMU)的一门课,叫计算机系统导论(ICS)。这门课相信计算机系的学生都不会陌生,一般都是作为第一门专业课开设的,内容基本就是回答大家刚入坑时最想知道的那个问题:学计算机都学些什么。对于我来说,这是当时唯一一门从计算机整体视角来开展介绍的课程,在那以后,我们就被扔进各个子学科里面扑腾,再也难一窥全貌。


《深入理解计算机系统》的作者们很谦虚,说这本书起源于ICS,但经过3版的不断扩充内容,涵盖范围已经很广,现在也可以作为计算机组成原理(ORG)和系统编程(SP)的教材,但我觉得,这本书的用途远不止于“教材”。


相信每个学完计算机的学生都会认同,学计算机,编程也好其它什么也好,最佳的方法就是动手,亲自动手做一次,比看什么书都掌握得牢靠。但是,这就带来一个悖论:学计算机,最好的方法就是去做一台计算机,计算机专业教的内容一言蔽之,确实就是怎样去制造计算机运行的各个所需部件,但限制条件非常多,真正动手撸一台计算机不太现实。


那怎么办呢?我经常在B站围观大牛完成各种精巧的小玩意,看了一遍,感觉自己也像是做了一遍,虽然肯定没有自己动手来得实在,不过肯定比只看纯描写要好得多。那我们是不是能退而求其次,“看”别人一个部件一个部件地撸一台计算机呢?《深入理解计算机系统》就是从这个理念出发写成了本书。


3《深入理解计算机系统》第3版都改了什么


《深入理解计算机系统》是一本经典书,现在已经出到了第3版,正好我手里第2版和第3版都有,顺手先一个比较。


总的来说,第3版基本沿用了第2版的框架,但也有不少变化。首先第3版有两个直观变化,一个是更厚了一点,一个是印刷更好看了,第2版是最经典的黑白印刷,第3版加入了蓝色,正好这本书里面很多代码图表,看起来更醒目了。


在内容上第3版也做了大量修改。第2版和第3版大概相差10年,在第2版上市的时候,IA32架构,也就是我们俗称的32位指令集还是主流,但到了现在,已经是64位指令集,也就是x86-64的天下了。第3版也体现了技术的变化,指令集的表现形式均采用64位。指令集是非常底层的东西,所以这部分牵涉了很多内容,书里都做了全面调整。


另一个内容上的大改动是API的升级,譬如在第11章,第3版用新的getaddrinfo和getnameinfo函数取代了老版的gethostbyname和gethostbyaddr。


此外还有不少细节上的调整甚至重写,也对一些容易让人困扰的知识点进行了扩充说明,总的来说阅读体验比上一版更好。

4《深入理解计算机系统》漫游指南

《深入理解计算机系统》一共12章,分成程序结构和执行、在系统上运行程序和程序间的交互和通信三个部分,涉及了计算机技术的方方面面,横跨多个科目。下面我就毛遂自荐充当各位的导游,和大家一起逐章看看都讲了哪些内容。


第一章,章名就叫“计算机系统漫游”,可以认为是这本书的“计算机导论”课,以一个hello程序为主线,串起了从编代码到程序执行整个过程都经历了哪些环节。最后有一个知识点,叫“Amdahl定律”,研究各个部件的性能提升和整体性能提升的关系。


第二章,叫“信息的表示和处理”,介绍了一些数字逻辑的内容,也就是计算机的“计算”部分。计算可分为数值类型和运算类型两个组成部分,在数学体系里,数的类型有很多,譬如自然数、整数、有理数、无理数、代数数、超越数、实数等等,光数系都是数学里的重点研究对象,不过别担心,计算机里边就简单多了,目前只分为整数和浮点数两类。

第二章也是“程序结构和执行”部分的第一章,往下都是从机器角度看程序构造。


第三章,叫“程序的机器级表示”,名字挺拗口,其实说的就是指令集的事。计算机专业一般不会为CPU指令集专门开一课,很多知识点和汇编语言说的内容重合,前面说的全面调整为x86-64体系,在这个部分体现得很充分。


第四章,叫“处理器体系结构”,讲的是CPU的工作原理。不要和上一章搞混了,CPU的指令集,和CPU本身的结构原理有关系,但不完全是一回事,这一章更多的是逻辑电路相关的内容,介绍诸如时钟周期、流水线等偏硬件内容。


第五章,叫“优化程序性能”,章名就已经很明确,划分知识点的话大部分属于编译原理范畴。我们上编译原理主要讲的是各种文法和实现诸如词法器这类的部件,不过这都属于基本功,真正的重点和难点在于优化。当然程序性能优化不止编译优化,这是一套体系,还有内存、存储等多个地方都可以进行优化。要想看编译原理的基本功部分,推荐看龙书。


第六章,叫“存储器层次结构”,就是我们所说的内存外存了,涉及磁盘构造、缓存设计等等问题。


第七章,叫“链接”,这是源码编译的一个重要环节。回忆一下编译原理对编译过程的介绍,源码编译不是直接从源码编译成目标代码,也就是不是直接生成机器码,而生成一种叫“中间代码”的产物。以中间代码为界,前面叫“前端”,对应的还有一个“后端”,就是通过中间代码最终生成目标代码,链接就是这个过程的一个重要环节。第七章也是“在系统上运行程序”部分的第一章,往下主要是从操作系统的角度看程序运行性的各种情况。


第八章,叫“异常控制流”,“异常”这个概念大家肯定都听过,不过这里主要指的是操作系统中的异常及中断的工作流程,不过也简要讨论了高级编程语言中的异常。


第九章,叫“虚拟内存”,虚拟内存在现代操作系统中非常重要,这一章主要讨论虚拟内存的各种管理机制,以及现在很热门的垃圾收集(GC),还延伸了一点安全人员很感兴趣的内存泄露方面的讨论。


第十章,叫“系统级IO”,主要介绍文件系统的读写等操作接口。要是能对文件系统本身多展开一点内容就更好了。这一章也是“程序间的交互和通信”部分的第一章,往下说的就都是各种IO了。


第十一章和第十二章分别介绍了“网络编程”和“并发编程”,至此主流的各种IO就全部介绍了一遍。

5
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭