《深入理解计算机系统》| 计算机系统漫游

[阅读本书的目的]

     我们傻傻的编写程序,其实并不知道计算机是如何将源代码文件编译链接成可执行的程序,也不知道指令是如何被加载,如何一条一条的执行,到最后显示出结果。在这一过程中,写代码的人如何能编写出健壮的代码、如何很好的利用操作系统的特性优化代码、发生了问题如何学会自己去分析,而不做拿来主义google式的程序猿。这本书也许是这些终极问题的最好解答,正如作者在开篇说的一样:“如果你全力投入学习本书的概念中去,完全理解底层计算机系统以及它对程序的影响,那么你将逐渐成为凤毛麟角的权威程序猿”。

[笔记内容]

     本章从一个程序的生命周期讲起,分别对程序的创建、编译、执行、输出、终止进行了详细的解读,从中引出了关于信息上下文、编译系统、高速缓存、操作系统等重要概念,并对上述问题进行了简单的讲解,其中作为程序猿应该要好好理解和利用的部分正是:高速缓存。

1.信息就是如何解释:

在我们编写程序源代码的时候,计算机系统其实为我们完成了源码与 ascii码的一一对应

其实在计算机系统的内部,所有的信息——包括磁盘文件、程序、以及网络中的数据都是由一串位表示的,区分不同信息的关键在于对于这些内容如何解释,就比如同样的一串01010101,可以解释成:整数、浮点数甚至指令。

2.编译系统

预处理-编译器-汇编器-链接器

这里简单讲解了从源程序:hello.c到可执行文件到四个阶段。每个阶段完成的工作和对应生成文件。

1]预处理的工作比较简单:对应的就是展开#include中的.h头文件;

2]编译器其实包含了一个汇编语言程序,讲程序语言转化成汇编语言;

3]汇编阶段:生成可重定位的.o二进制目标文件,这一步完成汇编语言转机器指令;

4]链接阶段:合并许多的.o文件,主要是我们在源程序中用到过的如:printf.o

3.高速缓存


产生原因是:程序需要大量复制信息

举一个例子来讲述我们为什么需要高速缓存技术:“我们在月球上建立了一间厨房,可以做出许多美味的食物。由于月球离地球的距离太遥远,我们要炒一个番茄炒蛋,需要大老远大从地球上通过宇宙飞船运输过去,而厨师真正开始炒菜需要的时间并不多。如果这样来回的运输食材,厨师大部分时间上空闲的在等待食材,这对高薪聘请的厨师来说,实在是太浪费了。有没有什么办法能够加快厨师做菜的速度呢?在这个例子中厨师就相当于cpu,而食材就相当于数据,而解决方案就是:高速缓存”

我们先来看看没用高速缓存中一个程序的运行干了什么:


从程序的加载执行到最后显示结果:大量到复制信息

当我们从外壳执行hello程序的时候,首先是将程序的数据和代码从磁盘复制到主存,处理器开始执行指令,并将需要显示的数据从主存复制到寄存器中,最后需要显示是将寄存器的数据复制到显示设备,最终显示出来的。这些复制操作就是开销,减缓了程序真正的工作。因此就需要高速缓存技术:暂时集结区域。

我们来看看高速缓存存储器的位置:


高速缓存存储器

由于机械原理,访问速度越快的存储设备造价相对越高,拿硬盘和主存来说。硬盘的造价可能是主存的1000倍,但是访问的开销却要比主存大10000000倍。高速缓存就是为了存放可能经常访问到的数据,这就大大提高了访问的速度,减小了开销。

主要思想是:一层上的存储器作为低一层存储器的高速缓存


4.操作系统


操作系统是软硬件之间的抽象

操作系统提供了软件与硬件之间的一层抽象,既可以防止程序滥用硬件也方便了我们对于程序的编写。这里的抽象主要是指:1]对运行中程序的抽象(进程);2]对于存储器的抽象(虚拟存储器);3]对输入输出的抽象(文件)甚至包括网络;4]虚拟机等。

这里的很多内容都是简单的提了一下,后续章节中还有详细的讲解。

漫游至此,对于本书要讲解的内容有了大概的了解,本书的出发点是很好的,正如《圣经》约翰福音中说的一样:你们必晓得真理,真理必叫你们得以自由。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,598评论 18 139
  • 计算机系统是由硬件和软件系统组成的,它们共同工作来运行应用程序。作为程序员,也需要了解这些组件是如何工作的,以及这...
    knightaoko阅读 675评论 0 2
  • 汇编语言:一种用于电子计算机、微处理器、微控制器,或其他可编程器件的低级语言。在不同的设备中,汇编语言对应着不同的...
    9ba348473cee阅读 1,928评论 0 0
  • 计算机系统是由硬件和系统软件组成的,它们共同工作来运行应用程序。 系统中的所有信息都是由一串位表示的,区分不同对象...
    长仙人阅读 253评论 0 0
  • 一.感恩今天的风和日丽,感恩下午野外执勤时一切顺利。 二.感恩公司人力资源部主管的热心讲解,感恩你的付出。 三.感...
    龙骁阅读 107评论 0 3