设备管理
输入/输出系统
I/O设备分类
按照数据传输率分类
- 低速设备:几个到几百字节/秒,如鼠标、键盘。
- 中速设备:几千到几十万字节/秒,如打印机、扫描仪。
- 告诉设备:大于等于几百万字节/秒,如磁盘、光盘
按照信息交换的单位分类
- 块设备:以数据块为单位传输,如磁盘,U盘
- 字符设备:以字符为单位传输,如终端,打印机
按设备共享属性分类
- 独占设备:同一时段只允许一个进程使用,如打印机
- 共享设备:允许多个进程同时访问的设备,如磁盘
- 虚拟设备:通过软件手段将独占设备“逻辑共享”,如 SPOOLing 技术中的虚拟打印机
设备控制器
系统接口 — I/O逻辑 — 设备接口
系统接口(设备控制器与CPU间的接口)
- 向 CPU 提供用于控制和状态查询的接口
- 接收 CPU 发送的 I/O 控制命令
- 向 CPU 报告设备状态和中断信息
设备接口(设备控制器与设备间的接口)
- 连接具体 I/O 设备
- 接收或发送设备的数据
- 控制设备的启动、停止及工作方式
I/O控制逻辑
- 解释 CPU 发出的 I/O 命令
- 产生对设备的控制信号
- 完成数据传送的时序与协调
- 处理错误和异常情况
I/O通道
通道概念
控制设备与内存进行数据交换的专用处理机
通道类型
- 字节多路通道:分时控制多台低速或者中速设备
- 数组选择通道:串行多台高速设备
- 数组多路通道:分时控制多台高速设备
通道程序
保存在主存中,由一系列通道指令构成。
I/O控制方式
程序I/O方式
CPU 通过不断轮询设备状态寄存器,判断设备是否准备好,然后逐字节或逐块进行数据传送。
步骤:
- 选中设备,向设备控制器发送指令,启动设备
- 令控制器状态寄存器busy=1
- 循环检查busy值直到0,同时设备控制器执行I/O操作完成后busy=0
- CPU传输到内存
特点:CPU与设备完全串行工作,设备速度远低于CPU,严重降低了CPU的利用率。
中断驱动I/O方式
CPU 不再轮询,设备准备好时向 CPU 发送中断信号,CPU 响应中断并处理 I/O。
步骤:
- 选中设备,向设备控制器发送指令,启动设备,令状态寄存器允许中断位=1
- 令控制器状态寄存器busy=1
- 进程进行堵塞使CPU去干其他的;同时设备控制器执行I/O操作完成后向CPU发起中断
- CPU响应中断后传输到内存
特点:CPU与设备并行工作,显著提高了CPU的利用率,至今仍然是字符设备的 I/O控制方式。
DMA I/O控制方式
专门的 DMA 控制器负责在 主存与 I/O 设备之间直接传送数据,CPU 只负责启动和结束控制。
步骤:
- DMA传送前预处理,CPU初始化DMA控制器,并启动设备
- DMA控制器完成设备与主存的数据传送
- CPU响应终端进行后处理
特点:数据传输基本单位是数据块,直接在设备和内存之间进行,传输期间不需要CPU干预。
I/O通道控制方式
步骤:
- CPU根据用户I/O请求生成通道程序,放到内存中设置首地址CAW
- CPU启动指令,启动通道工作
- 通道向CPU发送应答信号,通知启动指令完成,CPU可继续执行其他
- 通道不断读取程序中指令进行执行完成后通知CPU
特点:可以理解为 DMA 是“通道思想的简化版或高度定制版”,相比DMA干预更少
缓冲管理
缓冲缓和CPU与IO设备之间速度不匹配的问题
提高CPU与ID设备之间的并行性,减少对CPU的中断频率,放宽对CPU中断响应时间的限制
缓冲类型
全缓冲
数据先积累在缓冲区,满后才执行实际 I/O,典型用于磁盘文件读写,适合大量数据,提高性能。
行缓冲
遇到换行符才执行 I/O,输入先存入缓冲区,按回车或换行时才操作,典型用于键盘输入。
无缓冲
不使用缓冲,数据直接输出,典型为 stderr,便于错误信息即时显示。
缓冲实现机制
单缓冲
只有一个缓冲区,数据先存入缓冲区,再一次性写入或读出。实现简单,但 I/O 可能被阻塞,效率较低。
双缓冲
使用两个缓冲区,一边进行 I/O 操作,另一边进行数据准备(写入或读取)。I/O 与数据处理可以并行,提高性能。
循环缓冲
缓冲区首尾相连,形成环状结构,支持连续读写,常用于流式数据处理或实时数据传输,避免频繁拷贝。
缓冲池
维护多个缓冲块的集合,动态分配给不同任务使用,适合多线程或高并发场景,提高 I/O 利用率和灵活性。