/
...
/
/
§0 Legacy Note
Search
Try Notion
§0 Legacy Note
二.计算机组成(Hardware Organization)
CPU构成:
Program Count(PC):
大小一个字(word)的寄存器,存放某一指令地址
程序就是不断执行并更新PC,指向下一条指令
寄存器
单字长存储器 有自己独立的名字
ALU
进行计算
内存(Chapter.6)
结构上: 由多个RAM组成
逻辑上: 可以看成从0开始的大数组,有其地址
DMA技术: 可以将磁盘中的代码不经过CPU直接到内存中
总线
内存和处理器和系统部件之间传递信息,贯穿整个系统
一般设计为一个Word的宽度
输入输出IO(Chapter.6-10)
🖼️结构
每个输入输出设备通过控制器/适配器与IO总线相连接
控制器/适配器 : 区别在与封装方式,功能都是在IO设备和总线之间传递信息
缓存问题
🖼️存储多级结构
一个程序需要反复搬运设备
但大容量设备速度慢而便宜 小容量设备贵而快
L0: Reg寄存器比内存快100倍, 所以引入cache
L1 10-100K 几乎和寄存器相同
L2 0.1-10MB 5倍L1时间花费
L3 10-100MB 5倍L1时间花费
🖼️计算机/存储设备的结构
三.操作系统
意义
防止硬件被失控程序
提供统计机制
引入概念
文件: 对IO的抽象
虚拟内存: 对IO和内存抽象
进程: 对处理器 内存 IO的抽象
🖼️操作系统管理硬件
流程简析
Shell(User Code)→系统调用→操作系统(Kernel Code)→
保存Shell,创建Hello上下文→
Hello(User Code)→Hello Finish→操作系统→Shell
上下文(context): 操作系统跟踪进程运行所需状态信息 称为上下文
例如PC寄存器 的值 内存中内容
🖼️Hello Word调用流水图
多线程
现代操作系统一个进程往往由多个线程表示
每个线程运行在进程上下文中 共享代码 数据
网络应用中常用
虚拟内存
意义:
给程序制造假象,仿佛其占用了整个内存空间
每个进程所看到内存一致 称为虚拟内存空间
Linux虚拟地址空间简析
从地址小到大分析
程序代码和数据: 固定大小 可执行文件加载而来 加载全局变量
堆: malloc分配的空间 可以动态扩展收缩 向高地址分配
共享库代码数据: printf math 向高地址分配
用户栈: 向低地址分配 函数调用镇长 函数结束时候收缩
内核保留区域: 对应用程序不可见
🖼️内存分配模型
远程运行程序
阿姆达尔定律
意义: 当我们对系统某一部分加速时,这一部分的重要性和加速程度为影响系统性能的关键因素
推导
ToldT_{old} 加速前所需时间 可加速部分αTold\alpha T_{old} 和不可加速部分(1α)Told (1-\alpha)T_{old}
加速后若效率提升kk倍则有加速后时间为αTold/k\alpha T_{old}/k
则有Tnew=αTold/k+(1α)Told=(1α+α/k)ToldT_{new} =\alpha T_{old}/k + (1-\alpha)T_{old} =(1-\alpha+\alpha/k) T_{old}
则有加速比S=ToldTnew=11α+α/kS = \frac{T_{old}}{T_{new}} = \frac{1}{1-\alpha+\alpha/k}
应用
假如\alpha = 0.6 k→wu'q
加速比