当前位置:首页 > 公众号精选 > 程序喵大人
[导读]导读:如果你也读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
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

EDA代表了当今电子设计技术的最新发展方向,利用EDA工具电子设计师可以从概念、算法、协议等开始设计电子系统大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程在计算机上...

关键字: EDA技术 计算机系统

广州2023年2月3日 /美通社/ -- 近期,广电五舟成功中标中国气象局"气象信息化系统工程项目容灾备份中心高性能计算机系统采购"项目第二包,中标总金额过亿元。 本次中国气象局所采购的高性能计...

关键字: HP PC 高性能计算 计算机系统

实现敏捷部署 推动AI应用高效落地 深圳2023年2月2日 /美通社/ -- 全球AI/AIoT蓬勃发展,边缘运算及边缘装置布建需求逐年攀升,市场调研机构预期20...

关键字: I/O 计算机系统 软硬件 线路

嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统,有些嵌入式系统...

关键字: 嵌入式 机器人 计算机系统

车用传感器是汽车计算机系统的输入装置,它把汽车运行中各种工况信息,如车速、各种介质的温度、发动机运转工况等,转化成电讯号输给计算机,以便发动机处于最佳工作状态。

关键字: 汽车传感器 计算机系统 摄像头

物联网,成为近几年逐渐变得火热的词汇。从定义上来看,就是万物相连。比如你在工作,通过你的手机控制家里的窗帘开启与关闭,或者控制花园里的喷水闸开始浇水。这是一个便捷而又智能的领域,也是未来社会发展的一大趋势。而单片机指的是...

关键字: 单片机 嵌入式 物联网 计算机系统

单片机又称单片微控制器,全称是单片微型计算机,简称MCU,主要是指8位单片机。它既是典型的嵌入式微控制器,也是一种集成电路芯片,主要是把一个计算机系统集成到一个芯片上,相当于一个微型的计算机,其应用领域非常之广,譬如将单...

关键字: 单片微型计算机 应用领域 计算机系统

距离8051单片机的诞生已有40多年,由于专利的到期,国内8051单片机,在价格上一般都会便宜很多。随着科学技术的发展,单片机的使用减小了电子产品的尺寸、成本和复杂性。由于其简单性和优势,越来越多地电子产品使用这些嵌入式...

关键字: 单片机 嵌入式芯片 计算机系统

2020年下半年开始,单片机就开始慢慢紧俏了,涨价了,缺货了。这次缺货,应该也是近年来最严重的一次。当然造成的原因也比较多,传言也比较多。单片机MCU,其实它也是一个小系统,它是控制电子产品的大脑。现如今,我们生活中的许...

关键字: 逻辑功能的芯片 计算机系统 计算机原理

快来围观,到底物联网是个啥“网”? 最近几年,从咖啡机、门锁、家庭安全系统、车载娱乐、烤箱、冰箱等,都开始成为物联网中的一个环节,并且呈现爆发式的增长。

关键字: 物联网 计算机系统
关闭
关闭