Chapter01-计算机系统漫游-上

一、整本书的结构

  • 1.Chapter01:计算机系统漫游
  • 2.Chapter02~Chapter12
    • Part I:程序结构和执行(Chapter02~Chapter06)
    • Part II:在系统上运行程序(Chapter07~Chapter09)
    • Part III:进程间的交互和通信(Chapter10~Chapter12)

二、程序编译流程

  • 1.编译系统工作流程
程序编译.jpg
详细过程.jpg
  • Stage1(预处理):预处理器会根据以#开头的代码,来修改原始程序,预处理器会读取头文件中的内容,将头文件中的内容直接插入到源程序中,结果就得到了另一个C程序。经预处理器处理后得到的文件通常以.i为后缀结尾,它仍然是一个文本文件;

  • Stage2(编译):编译器将hello.i文件翻译成hello.s文件,这一过程称为编译。其中编译这一阶段包括词法分析、语法分析、语义分析、中间代码生成及优化等一系列的中间操作;

  • Stage3(汇编):汇编器根据指令集将汇编程序hello.s翻译成机器指令,并且把这一系列的机器指令按照固定的规则进行打包得到可重定位目标文件hello.o。此时,虽然hello.o是一个二进制文件,但是还不能执行还需要进行链接操作;

  • Stage4(链接):在hello这个程序中,调用了标准C库中的函数printf,每一个C语言的编译器都会提供。当调用printf函数时,编译器就知道你要在屏幕上打印输出内容,它会将这行代码翻译成计算机可以理解的指令。printf函数在名为printf.o文件中,这个文件是一个提前编译好的目标文件。链接器ld负责把hello.o和printf.o进行合并,但合并需要遵循一定的规则。正是由于链接器要对hello.o和printf.o进行调整,所以hello.o才会称为可重定位目标文件,最终经过链接阶段可以得到可执行目标文件hello。此时,得到的hello就可以被加载到内存中执行了。

  • 2.理解编译系统工作流程的意义

    • 优化程序性能;
    • 理解链接时出现的错误;
    • 避免安全漏洞(缓冲区溢出);

三、计算机系统的硬件组成

计算机系统的硬件组成.jpg
  • 1.CPU的结构

    • 程序计数器PC:一个字即4字节(32位系统)或一个字即8字节(64位系统)的存储空间,里面存放的是某一条指令的地址。从系统上电的那一瞬间到系统断电,处理器就不断地在执行PC执向的指令,然后更新PC,使其指向下一条要指向的指令。注意:下一条执行的指令与刚刚执行过的指令不一定是相邻的地址。

    • 寄存器文件:它是CPU内部的一个存储设备,寄存器文件是由一些单字长的寄存器构成,每个寄存器都有自己唯一的名字。换句话说,寄存器可以理解为一个临时存放数据的空间。

    • 算术逻辑单位ALU:例如,计算两个变量a、b的和,处理器从内存中读取a的值暂存在寄存器X中,读取b的值暂存在寄存器Y中,这个操作会覆盖寄存器中原来的数值。处理器完成加载的操作后,ALU会复制寄存器X和Y中保存的数值,然后进行算术运算,得到的结果会保存在寄存器X或寄存器Y中。此时,寄存器中原来的值会被新的值所覆盖。

  • 2.主存/内存

    • 处理器在执行程序时,内存主要存放程序指令和数据。从物理上来说,内存就是由随机动态存储芯片组成;从逻辑上来说,内存可以看成是一个从0开始的大数组,每个字节都有相应的地址。
  • 3.总线

    • 内存和处理器之间通过总线来进行数据传递,总线贯穿了整个计算机系统,它负责将信息从一个部件传递到另一个部件,通常总线被设计成固定长度的字节块即字word。字表示多少个字节,各个系统是不一样的。
  • 4.输入输出设备

    • 例如:键盘、鼠标、显示器等,每个输入输出设备都通过一个控制器或者适配器与IO总线相连。

四、hello程序执行时,究竟发生了什么?

  • 1.键盘输入./hello时,shell程序会将输入的字符逐一读入寄存器,处理器会把这个hello字符串放入内存中;
第1步.jpg
  • 2.当完成输入,按下回车键时shell程序已经知道我们已经完成了命令的输入,然后执行一系列的指令来加载可执行文件hello。 这些指令将hello中的数据和代码从磁盘复制到内存。数据就是要在屏幕上显示的“hello world\n”,这个复制的过程将利用DMA技术,数据可以不经过处理器,从磁盘直接到达内存;
第2步.jpg
  • 3.当可执行文件hello中的代码和数据被加载到内存中,处理器就开始执行main函数中的代码。CPU会将“hello world\n”这个字符串从内存复制到寄存器文件,再从寄存器文件复制到显示设备即屏幕上;
第3步.jpg

五、缓存问题

  • 1.通常情况下,大容量的存储设备存取速度要比小容量的慢;运行更快设备的价格相对于运行速度慢的设备的价格要贵;

  • 2.内存的层级结构

内存层级结构.jpg
  • 针对处理器和内存之间的读写速度差异,系统设计人员在寄存器文件和内存之间引入了高速缓存cache。比较新且处理能力比较强的处理器,一般有三级高速缓存:L1 cache、L2 cache、L3 cache。L1 cache的访问速度与访问寄存器文件几乎一样快,L2 cache的访问速度是L1的5倍,L3 cache的容量更大,访问速度与L2 cache相比更慢。
    寄存器文件Register File           100~1000B
        L1 cache                     10~100KB
        L2 cache                     0.1 ~10MB
        L3 cache                     10~100MB
    内存Main Memory                   1~100GB
    磁盘Disk                          1~1000TB
    

六、参考资料

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

推荐阅读更多精彩内容