深入理解计算机系统读书笔记之第一章:漫游

我是从豆瓣上看到好多人都在推荐这本书,于是就去借来读一读,昨天晚上用了好长时间来读这本书的第一章节,感觉这本书比较符合我(有些基础还不太明白,这本书详细的进行了讲解,很好)。

下面写一下我的理解(顺便回顾一下知识)

第一节主要讲的是: A Tour of Computer Systems

以hello.c为例进行讲解,介绍这个程序如何从一个源程序变成可执行程序,再到执行,显示屏上出现“hello,world”

··················································································································································

文章比较有条理,符合人的一般思维。(我觉得既然计算机是人制造的,用来对人的思维计算进行拓展的,那么他的一些操作就应该能用人的一般思路来进行理解)以我的思路来进行回顾一下。

其实这本书的原名叫做:Computer Systems: A Programmer's Perspective(以一个程序猿的角度来进行理解计算机系统)

下面假设自己是一个电脑小白(其实也差不多,嘻嘻,不,比小白强一点的,但是有些概念什么的还是不明白,计算机的工作原理也搞不清楚,但是这一章以一个c源程序的执行过程对对计算机进行了讲解,非常棒,有很大的收获,废话不多说了)Let's begin.

  1计算机来说就不用讲了

  2计算机中有很多信息吧。那么信息又是什么呢?信息=位+上下文明白电脑是0,1二进制进行存储,计算的。基本存储就是位。但是相同的位又在不同的文件中又不同的含义这又是为什么呢?因为他们有不同的上下文,就是说他们的上下的信息不同,举一个例子来说就像是:文言文中的“其”“之乎者也”等虽然他们是同一个字但是他的上下文不同,所以就有了分别。所以信息就有了区分.

  3.理解了信息以后,那么我们就以hello.c文件为例。对他的执行过程进行分析理解。

我们明白hello.c的程序

#include <stdio.h>
main()
{
  printf("Hello world!\n");
}

这就是hello.c一般这是学习c语言的第一个程序。 这是由c语言写的但是不能 有计算机直接进行执行。c语言这是高级语言,这种语言是给程序猿看的,但是电脑看不懂。所以我们就要来请一个翻译官,让两个文件能进行理解,交流。 “翻译官”就是一个编译系统。那么我们来看一下这个编译系统由哪些部分来组成。   预编译   编译   汇编   链接 预编译这个阶段来说:就是讲#开头的directives来进行处理,(这是系统中原有的)经过这个阶段以后hello.c变成hello.iwenjian 编译:包含一个汇编语言程序,将高级语言写的程序变成由汇编语言写的。hello.i变成hello.s 汇编阶段呢:就是将这个helo.s变成hello.o的程序,这个程序已经是由机器语言,二进制的,用文本编辑器打开会出现乱码 最后一个阶段就是链接:这个阶段呢,就是由于源程序中出现了一些调用库中的函数什么的,但是这个程序中没有所以需要链接形成一个真正的可执行程序。保存到存储器中 4对硬件进行讲解(我们知道了如何生成可执行程序的,而且已经保存到了存储器中那么,计算机是如何进行执行的呢?硬件上对他的执行过程进行讲解喽,,,,) 硬件的话,首先,整体的了解一下这个硬件系统

             计算机硬件系统构成

总体上明白了计算机硬件系统的构成以后那么,我们来详细的了解一下具体组成,各个名词的含义。

(1)总线:一个贯穿于整个系统的一条电子通道。主要进行在各个硬件之间传递信息的。我觉得就像是一条条公路,使得各个点之间相连起来,能形成交流,信息的交换。

(2)I/O设备: 输入输出设备。嗯,这个。。。。这个是系统与外界之间的交流的通道。

I/O设备有什么构成呢?由一个控制器或者是一个适配器与I/O总线之间相连起来。那么是控制器,什么是适配器呢?

控制器:I/O设备本身或者是在主板上的一个芯片组

适配器:插在主板上的卡槽上的卡

(3)主存:一个临时存储设备。(DRAM),在执行程序时负责存储程序以及其程序处理的数据。

(4)处理器(CPU):解释/执行存储在主存的指令的引擎的核心。就相当于大脑,对来自各个系统的信息进行分析,发出执行命令,kernel

处理器又能执行些什么操作呢?

    加载:对主存中的信息进行加载。从主存中拷贝一个字/字节放到寄存器中,覆盖原来的信息

    存储:从寄存器中拷贝一个字/字节放到主存的某个位置,覆盖原来的信息。

    更新:拷贝两个寄存器中的内容到ALU,ALU对其进行相加放到一个寄存器中,覆盖原来的信息。

    I/O读:从I/O设备中拷贝一个字/字节到寄存器中,覆盖

    I/O写:从寄存器中拷贝一个字/字节到I/O设备中,覆盖

    转移:从指令中拷贝一个字,拷贝到PC中,覆盖 5.了解了硬件后,那么如何对其进行加速呢? 信息太多,转移速度慢,程序运行时间啊长,等待时间长,所以,我们需要对这个过程进行加速。但是,这个过程中,主要耗费时间的地方在哪里呢?只有明白了这个点才能对其进行加速,效果更明显。 主要的耗费时间点在与:读取信息,就是信息的转移,从一个位置转贷另一位置,比如说从主存到寄存器中。(我们明白:较大的存储设备运行比较小的存储设备运行要慢的多) 如何解决呢?引出来一个概念叫做高速缓存。 磁盘->主存->寄存器   高速缓存

金字塔上越高运行时间越短,越快,但是相应的造价越高。 上面的可以做下面的高级缓存。 7明白了硬件系统后,就应该进行执行了。 执行,又要明白操作系统。要知道程序不能之间控制硬件,中间有操作系统 。操作系统直接控制硬件。 明白一些概念 进程:假象,好像独占处理器,主存和I/O设备,只有这个程序在运行。       实际上数多个程序在执行。并发运行(一个程勋的指令与另一个程序的指令在相互的执行),上下文切换:保存程序运行所需要的全部信息 虚拟存储器:假象,每个进程独占主存。有唯一的地址 文件:字节序列。 8.网络也是一种I/O设备 上面是一台电脑的执行过程,但是没有和其他的电脑进行交流。 ····················································································································· 最后了,终于完成对第一章的回顾了,下面感慨一下: 这一章是从整体上进行讲解。没有详细的讲解。 这种分配非常好。 我们在学习时,首先,我们从整体上,明白一下这个过程,然后我们再来详细的了解各个过程。 嗯哪,花了一上午的时间终于写完了,有成就感!!!! 下午看第二章,待续。。。。。。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java成长之路

mo9 2年java面试总结

mo9是一家做数字货币交易所的公司,在4月份的时候自己去mo9参加了java开发的面试。mo9的面试更加注重基础,问了很多java基础方面的知识。下面将面试的一...

1042
来自专栏Jerry的SAP技术分享

腾讯AI开放平台的接口调用指南

最近无意发现腾讯AI开放平台上提供了大量好玩的人工智能云服务,而且是完全免费的。只需要用QQ号登录即可。这么好的东西,作为一个程序员,当然要试试了!

1.3K2
来自专栏牛客网

金山wps服务端二面面经

前言:阿婆主很久很久没写过面经了,之所以写这篇面经是真的感觉wps相关的面经太少啦,既然有机会面试那就写一篇吧 直接上啦---> 协程和线程,比如协程底层的实现...

5516
来自专栏数据结构与算法

万能pb_ds头文件—bits/extc++.h

c++中自带了一些非常强大却鲜为人知的功能库—pd_ds库 里面含有红黑树(rb_tree),哈希表(gp_hash_table),可持久化平衡树(rope)等...

3966
来自专栏苦逼的码农

为什么寄存器比内存快?

计算机的存储层次(memory hierarchy)之中,寄存器(register)最快,内存其次,最慢的是硬盘。

872
来自专栏北京马哥教育

高性能服务器架构里的隐藏秘密

作者:Coder李海波 来源:http://blog.csdn.net/marising/article/details/5186643 在提到服务器架构时,...

3344
来自专栏Python中文社区

用Python玩转微信的正确姿势!

0. itchat 最近研究了一些微信的玩法,我们可以通过网页版的微信微信网页版,扫码登录后去抓包爬取信息,还可以post去发送信息。 然后发现了itchat这...

5468
来自专栏一个会写诗的程序员的博客

函数式编程与面向对象编程[5]:编程的本质函数式编程与面向对象编程[5]:编程的本质编程的本质

函数式程序员在洞察问题方面会遵循一个奇特的路线。他们首先会问一些似有禅机的问题。例如,在设计一个交互式程序时,他们会问:什么是交互?在实现 基于元胞自动机的生命...

1072
来自专栏Golang语言社区

在 Go 语言中,如何正确的使用并发

从多个花絮中提取,但是如果我斗胆提出主要观点的总结,其内容就是:抢占式多任务和一般共享状态结合导致软件开发过程不可管理的复杂性, 开发人员可能更喜欢保持自己的一...

1192
来自专栏全栈数据化营销

用python采集猫眼电影排行榜信息

随着大数据和人工智能多次被大佬提及之后,并且被定义为未来的大趋势后,天然适合于大数据和人工智能的编程语言python也异常火热,市面上出现了不少的高价格、大规模...

2847

扫码关注云+社区