深入理解计算机系统 第 1 章:计算机系统漫游

381次阅读
没有评论

本章节主要是通过一个整体的脉络介绍各个组成部分,讲解了计算机的整体流程。

后面的内容会对其中的小部分做更详细的讲解。这里记录了几个自己认为比较有意义的概念帮助理解。

信息就是位 + 上下文

系统中的所有信息,都是一串比特组成的。区分不同数据对象的唯一方法是联系他们的上下文。

从一个 c 文件,到可执行目标文件整个翻译过程分为 4 个阶段

深入理解计算机系统 第 1 章:计算机系统漫游

  • 预处理阶段 预处理器 cpp 根据字符# 开头的命令,修改原始的 C 程序。
    比如 include<stdio.h> 命令告诉预处理器,读取系统头文件 stdio.h 的内容。并把它插入到程序中。结果得到了另一个 c 程序。通常为.i 作为文件拓展。

  • 编译阶段。编译器(ccl)将 hello.i 翻译成文本文件 hello.s 翻译是将.i 转为汇编。

  • 汇编阶段,汇编器(as)将 hello.s 翻译成机器语言指令,将这些指令打包成可重定位目标程序的格式。并将结果保存至目标 hello.o 中(改文件为二进制文件,它包含的 17 个字节是 main 的执行编码)。如果文本编辑器打开,则为一堆乱码

  • 链接阶段:比如说 hello 程序调用了 printf 函数,是每个 C 编译器都提供的标准 C 库中的一个函数,printf 函数保存在一个名为 printf.o 的单独预编译完成的目标文件中。这个文件必须以某种方式合并到我们程序中。链接器(ld)就负责这种合并,于是得到 hello 文件,它是一个可执行文件,可以直接加载到内存中执行。

程序执行的过程:

shell 程序执行指令,等待我们的命令,输入命令并回车之后,shell 将字符都逐一读进寄存器。再把它放到内存中。

(利用 DMA: 直接存储器读取)技术可以数据不经过处理器而直接从磁盘到达主存。

一旦目标文件 hello 的代码和数据被加载到内存,处理器就开始执行。hello 程序中 main 程序中的机器语言指令。再从寄存器文件中复制到显示设备,最终显示在屏幕上。

深入理解计算机系统 第 1 章:计算机系统漫游

摩尔定律:

深入理解计算机系统 第 1 章:计算机系统漫游

思考:

深入理解计算机系统 第 1 章:计算机系统漫游

为什么左边比右边快 20 倍


IT 内容具有时效性,未避免更新后未同步,请点击查看最新内容: 深入理解计算机系统 第 1 章:计算机系统漫游
文章首发于:http://nebofeng.com/2021/03/28/cs-a-p-p-01-c/
正文完
欢迎关注个人公众号(目前内容还比较少)
post-qrcode
 
HTML文本

本文链接:

nebofeng
版权声明:本站原创文章,由 nebofeng 2021-03-28发表,共计791字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码