计算机系统漫游读书笔记
本章通过一个helloworld源程序从编译到执行的的流程来说明系统的运行机制。
- 信息就是位+上下文
- 程序被其他程序翻译成不同的格式
- 了解编译系统如何工作是大有益处的
- 处理器读并解释存储在存储器中的指令
- 高速缓存至关重要
- 存储设备形成层次结构
- 操作系统管理硬件
- 系统之间利用网络通信
- 重要主题
- 小结
1.1 信息就是位+上下文
- 系统中所有的信息都 是由一连串的位(01) 表示,这些位所代表的意义由上下文决定。
- 我是如何记忆的:一千个读者(上下文)就有一千个哈姆雷特(位)
- 我是如何拓展的:同样的符号在不同场景中代表的意义不同, 如+可表示为数字上的加,也可表示为字符串连接。
1.2 程序被其他程序翻译成不同格式
- 以人类能看懂的源代码形式存在的程序并不能让机器执行,需要经过一系列的“翻译”过程,这个过程就叫编译。
- 编译的过程进一步分解为:
- 预处理: 处理头文件,从头文件中提取需要的内容
- 编译:将源码翻译成汇编代码
- 汇编:将汇编代码翻译成对应的机器码
- 链接:将用到的库函数通过一定的方法提取到上一步生成的文件中
我如何记忆: 想象成流水线加工
铁矿清洗(预处理)-> 融化成铁汁(编译)->变成零件(汇编)->组装成汽车(链接)
我如何扩展: 看病流程
预约->看病/出处方->处方处理,打针还是吃药->药店拿药/去打针
1.3 了解编译系统如何工作是大有益处的
- 优化程序性能
- 理解链接时出现的错误
- 避免安全问题
记忆与拓展:知道汽车的原理可更好地使用车子、知道汽车抛锚时问题所在、避免出事故。
1.4 处理器读并解释存储在存储器中的指令
以上图为例 ,硬件是怎么执行./hello的:
1. 输入命令 ./hello: USB控制器->I/O桥->寄存器->内存
记忆: 收到开会通知->去会议室的通道->到达会议室
2. 加载文件(DMA): 磁盘->I/O桥->内存
记忆: 从抽屉拿出相关资料->带到会议室
3. 运行并输出: 内存->CPU->显示器
记忆: 在会议室取出准备的资料->组织语言->汇报
1.5 高速缓存至关重要
- 高速设备跟低速设备之间设立一个小容量缓存,利用局部性原理,把最近访问到的内容放进去。
我如何记忆: 经常用到的东西放在容易拿到的地方
拓展: 从网络上传来的数据会先放到高速缓冲区中, 内核再从中取出处理,而并不是一直等待。
1.6 存储设备形成层次结构
- 将一层上的存储器作为低一层的高级缓存
记忆: 权力金字塔 超高的人类越少权力越大
1.7 操作系统管理硬件
进程 正在运行的程序的抽象
记忆: 做饭的一系列流程(洗菜、切菜、炒菜….)
拓展: 写博客时突然肚子饿了,先保存文稿,去吃完东西再回来继续。线程 轻量级的进程,进程包含多个线程,线程共享进程内的资源
记忆: 做饭的时候可能有多个人一起合作,有人负责洗菜,有人负责切菜,他们共享厨具。虚拟存储器 对内存和硬盘的抽象(简化)
虚存使得进程看到的地址空间是一致的。
地址空间布局
记忆: 公司内部有办公区、休息区、会议室……
- 文件: I/O设备的抽象。 文件本质上就是字节序列,仅此而已。
记忆: 打小人?
1.8 系统之间利用网络通信
- 将1.4节中USB输入和显示器输出变成网络通信。
1.9 重要主题
并发 通用概念,指同时存在多个活动的系统
并行 用并发使系统运行得更快
线程级并发
多核: 仅共享L3, 其实的每个核独有(ALU、L1、L2、寄存器…..)
记忆: 请多个人来干活
超线程:CPU某些硬件有多个备份(PC、寄存器)
记忆: 替补球员不能闲着,也要做事, 比如呐喊….
指令级并行: 同时执行多秫指令
超标量: 比一个时钟周期一条指令还快的执行速度
记忆: 超人可以同时干多个人才能干的活单指令、多数据并行(SIMD): 通过特殊的硬件来允许一条指令产生多个并行操作的方式。
本文以helloworld程序为例,深入解析计算机系统从编译到执行的全过程。介绍了信息表示、程序编译、处理器工作原理、高速缓存作用、存储层次结构等核心概念,并探讨了操作系统管理和系统间通信机制。
1201

被折叠的 条评论
为什么被折叠?



