硬件设备
I/O 设备
组成部分:==I/O 设备控制器 + I/O 设备==
I/O 结构模式:
同步 I/O 结构:==进程== 必须等待 I/O 完成后才可以继续执行(进程进入 ==等待== 状态)
异步 I/O 结构:==进程== 不需要等待 I/O 完成而是由处理器继续执行剩下的代码
注:进程可以申请多个 I/O 设备 -> 产生中断时如何判断到底是哪个设备产生的呢?
设备状态表:记录每个设备的 ==状态 地址 类型==
执行过程:中断产生时处理器会根据设备状态表索引到发出中断的设备控制器
问题:每次请求 I/O 设备并返回的过程中都会产生中断 -> 导致处理器会频繁地处理中断程序 -> 处理器 ==性能下降==
传输过程:
轮询机制:
- 定义:CPU 会不断询问 I/O 设备是否完成任务
- 细节:CPU 会一直处于忙等待状态 -> 此期间 CPU 无法完成其他的工作
直接内存访问机制
- 定义:直接内存访问机制是指外部设备不通过处理器而直接与系统内存交换数据的技术
- 过程:
- 处理器每次将 数据 + 指令 + 设备信息 写入内存 中 ( 称为
DMA
地址块) - 处理器将
DMA
地址块的地址交付给DMA
控制器 (计算机总线现在由 DMA 控制器接管而不是处理器) - 处理器通知 硬件驱动程序 操控相应的 硬件控制器 进行读写操作
- 硬件设备控制器发送
DMA
请求 通知DMA
开始传输数据 DMA
控制器占用 内存总线 根据 内存地址 获取相应的 内存空间 (此时处理器不可以访问内存只可以访问缓存)DMA
控制器获取到相应内存空间后发送DMA
确认- 硬件设备开始传输数据并且 清除
DMA
请求 DMA
接收到数据之后就将其通过总线送入相应的内存空间中DMA
等待 内存空间 充满之后向处理器发出中断交付数据
- 处理器每次将 数据 + 指令 + 设备信息 写入内存 中 ( 称为
- 细节:
- 大多数操作系统都是不会直接为 DMA 设置物理空间(就是不会做个单独做个存储硬件),主要是在内存中开辟缓冲区
- 实际上
DMA
控制器仅仅只负责收取数据而实际操作设备控制器的始终都是 设备驱动程序
驱动程序 & 控制器:
流程:操作系统发出指令 -> 驱动程序接收指令 -> 控制器接收指令操作具体的 I/O 设备
前提:应用程序的运行需要驱动程序
控制器属于硬件设备 <-> 驱动程序是安装在 ==操作系统之上== 或者内置在 ==操作系统内== 的程序
控制器管理同规格的不同类型的设备 <-> 驱动程序管理同类型的设备
解释:只要满足控制器的规格设备都可以接入计算机:比如 友基 和 wacom 的数位板都是通过 USB 接口接入控制器,被 USB 控制器统一管理
但是每种类型的数位板都需要安装不同的驱动程序,每个 wacom 的驱动程序仅管理 wacom 的数位板不管理友基的
控制器都是运行在底层的 <-> 大多数驱动程序都是运行在内核态
存储器
存储结构
寄存器:(1) 用和处理器相同的材料制成 (2) 处理器访问寄存器时不会产生时延
高速缓存(Cache):
定义:用于存放经常使用的数据
分类:(1) 一级缓存 (2) 二级缓存
注:访问一级缓存不需要时延因为一级缓存通常存放在 处理器 中;访问二级缓存会延时 1 到 2 个时钟周期(CLK)
缓存机制(Caching):将数据从速度较慢的内存中拷贝到速度较快的缓存中
置换数据:[LRU 置换算法](#LRU 置换算法)
-
- 定义:具有巨大容量的字节数组,每块字节都具有自己独立的地址
- 组成:==RAM(易失性) + ROM(非易失性)==
- 细节:主存可以被认为二级存储的缓存
固态硬盘
磁盘:硬盘 + 软盘
注:不过现在的软盘已经被废弃所以说磁盘就是硬盘也没问题
硬盘:(1) 固态硬盘:采用 PCB 主板构成,读取速率更快 (2) 普通硬盘采用磁片重叠组成
光盘:通常需要外接光驱进行使用;磁盘通常直接嵌入在计算机中
注:现在通常使用蓝光(BD);光盘已经很少在用
细节:
磁盘等大容量存储设备是 不可以 直接被 CPU 访问
-
注:计算机组成原理:CPU 是不会直接访问主存的 -> 如果高速缓存未命中 -> 经由高速缓存去主存中索取相应的数据而不是 CPU
图示

处理器
前提:处理器内部结构非常重要,对理解内存中的进程如何执行是很关键的(建议学习《计算机组成原理》)
寄存器:
数据寄存器(DR):临时存放需要 ==写入内存== 或者 ==从内存读取== 的指令和数据
- ==弥补== 处理器和主存以及外围设备之间在 ==操作速度上的差异==
- 数据寄存器在部分情况下可以作为操作数寄存器(通用寄存器)
指令寄存器(IR):保存当前 ==正在执行的指令)==
程序计数器(PC):保存将要执行的 ==指令的地址==
地址寄存器(AR):保存处理器正在访问的内存的 ==地址相关信息==
- 基地址寄存器:保存访问内存的 ==基地址==
- 界限地址寄存器:保存访问内存的 ==上限地址==
- 栈顶寄存器(SP):存放 ==内存== 中堆栈区域的 ==起始地址)==
累加寄存器:存放加减乘除的运算结果和操作数
程序状态字寄存器:保存条件码 + 模式 + CPU优先级 + 各种控制位信息
- 条件码:计算过程有无进位和溢出;模式:操作系统处于用户模式还是内核模式;控制位:是否屏蔽中断
通用寄存器:存放运算结果
运算器:执行数据的 算术运算 和 逻辑运算
控制器:
根据指令的解析结果去控制硬件设备
注:译码器是控制器中的一部分
细节:
- 程序计数器 + 累加寄存器 + 程序状态字寄存器 + 指令寄存器 + 栈寄存器都只有一个;其余寄存器都是可以存在多个的
- 处理器中的寄存器实际并不只有这些,还有其他的寄存器,但是这些是最主要的寄存器
执行流程:
