05.设备管理
I/O控制器
I/O设备和CPU的"中介"
功能
组成
-
一个I/O控制器可能会对应多个设备
-
数据寄存器, 控制寄存器, 状态寄存器可能有多个(如: 每个控制/状态寄存器对应一个具体的设备), 且这些寄存器都要有相应的地址, 才能方便CPU操作. 有的计算机会让这些寄存器占用内存地址的一部分, 称为内存映像I/O; 另一些计算机则采用I/O专用地址, 即寄存器独立编址
I/O控制方式
即: 用什么样的方式来控制I/O设备的数据读/写
-
注意点
- 完成一次读/写操作的流程
- CPU干预的频率
- 数据传送的单位
- 数据的流向
- 主要缺点和主要优点
程序直接控制方式
-
完成一次读/写操作的流程
-
轮询
-
-
CPU干预的频率
- 很频繁, I/O操作开始之前, 完成之后需要CPU介入, 并且在等待I/O完成的过程中CPU需要不断地轮询检查
-
数据传送的单位
- 每次读/写一个字
-
数据的流向
- 读操作(数据输入) : I/O设备 -> CPU -> 内存
- 写操作(数据输出) : 内存 -> CPU -> I/O设备
- 每个字的读/写都需要CPU的帮助
-
主要缺点和主要优点
- 优点 : 实现简单
- 缺点 : CPU和I/O设备只能串行工作, CPU需要一直轮询检查, 长期处于"忙等"状态, CPU利用率低
中断驱动方式
-
完成一次读/写操作的流程
-
CPU干预的频率
- 每次I/O操作开始之前和完成之后需要CPU介入
- 等待I/O完成的过程中CPU可以切换到别的进程执行
-
数据传送的单位
- 每次读/写一个字
-
数据的流向
- 读操作(数据输入) : I/O设备 -> CPU -> 内存
- 写操作(数据输出) : 内存 -> CPU -> I/O设备
-
主要缺点和主要优点
- 优点 : I/O控制器会通过中断信号主动报告I/O已完成, CPU不再需要不停轮询. CPU和I/O设备可并行工作, CPU利用率得到明显提升
- 缺点 : 每个字在I/O设备与内存之间的传输, 都需要经过CPU. 而频繁的中断处理会消耗较多的CPU时间
DMA方式
直接存储器存取
-
完成一次读/写操作的流程
-
CPU干预的频率
- 仅在传送一个或多个数据块的开始和结束时, 才需要CPU干预
-
数据传送的单位
- 每次读/写一个或多个块(每次读写的只能是连续的多个块, 且这些块读入内存后在内存中也必须是连续的)
-
数据的流向 (不再需要经过CPU)
- 读操作(数据输入) : I/O设备 -> 内存
- 写操作(数据输出) : 内存 -> I/O设备
-
主要缺点和主要优点
- 优点 : 数据传输以"块"为单位, CPU介入频率进一步降低. 数据的传输不再需要先经过CPU再写入内存, 数据传输效率进一步增加, CPU和I/O设备的并行性得到提升
- 缺点 : CPU每发出一条I/O指令, 只能读/写一个或多个连续的数据块
通道控制方式
-
完成一次读/写操作
-
CPU干预的频率
- 极低, 通道会根据CPU的指示执行相应的通道程序, 只有完成一组数据块的读/写后才需要发出中断信号, 请求CPU干预
-
数据传送的单位
- 每次读/写 一组数据块
-
数据的流向 (在通道的控制下进行)
- 读操作(数据输入) : I/O设备 -> 内存
- 写操作(数据输出) : 内存 -> I/O设备
-
主要缺点和主要优点
- 缺点 : 实现复杂, 需要专门的通道硬件支持
- 优点 : CPU, 通道, I/O设备可并行工作, 资源利用率很高
I/O软件层次结构
用户层软件
设备独立性软件
-
与设备的硬件特性无关的功能几乎都在这一层实现
-
主要实现的功能
- 向上层提供统一的调用接口
- 设备的保护
- 与文件保护类似, 访问权限
- 差错处理
- 设备的分配与回收
- 临界资源
- 数据缓冲区管理
- 可以通过缓冲技术屏蔽设备之间数据交换单位大小和传输速度的差异
- 建立逻辑设备名到物理设备名的映射关系; 根据设备类型选择调用相应的驱动程序
设备驱动程序
中断处理程序
输入/输出管理
输入/输出应用程序接口
-
阻塞I/O
- 应用程序发出I/O系统调用, 进程需转为阻塞态等待
-
非阻塞I/O
- 应用程序发出I/O系统调用, 系统调用可迅速返回, 进程无需等待
设备驱动程序接口
I/O核心子系统
I/O调度
-
用某种算法确定一个好的顺序来处理各个I/O请求
设备保护
-
设备可被看作是一种特殊的文件, 而文件有文件保护功能
假脱机技术(SPOOLing技术)
-
将独占式设备虚拟成共享式设备
设备分配与回收
设备分配时应考虑的因素
-
设备的固有属性
- 独占设备
- 共享设备
- 虚拟设备
-
设备分配算法
-
设备分配中的安全性
- 安全分配方式 : 为进程分配一个设备后就将进程阻塞, 本次I/O完成后才能将进程唤醒
- 一个时段内每个进程只能使用一个设备
- CPU和I/O设备只能串行工作
- 不安全分配方式 : 进程发出I/O请求后, 系统为其分配I/O设备, 进程可继续执行, 之后还可以发出新的I/O请求. 只有某个I/O请求得不到满足时才将进程阻塞
- 安全分配方式 : 为进程分配一个设备后就将进程阻塞, 本次I/O完成后才能将进程唤醒
静态分配与动态分配
-
静态分配
- 进程运行前为其分配全部所需资源, 运行结束后归还资源
-
动态分配
- 进程运行过程中动态申请设备资源
设备分配管理中的数据结构
-
设备控制表(DCT)
-
控制器控制表(COCT)
-
通道控制表(CHCT)
-
系统设备表(SDT)
设备分配的步骤
设备分配步骤的改进方法
缓冲区管理
单缓冲
双缓冲
循环缓冲
缓冲池
磁盘
磁盘的结构
-
磁盘、磁道、扇区
-
如何在磁盘中读/写数据
-
盘面、柱面
-
磁盘的物理地址