首页/操作系统/05-io/IO 控制方式 🔗 在 Obsidian 中打开
操作系统 · 05-io

IO 控制方式

重要度 ⭐⭐ 操作系统/IO管理IO管理DMA通道中断408
速查
I/O 控制方式指 CPU 控制 I/O 设备与主机之间数据传送的方式:程序查询(完全参与)→ 程序中断(部分参与)→ DMA(很少参与)→ 通道(几乎不参与),CPU 效率递增。

速查

项目
核心概念I/O 控制方式是指 CPU 控制 I/O 设备与主机之间数据传送的方式,经历了从简单到复杂的发展过程
关键性质优点:CPU 利用率提高
考试频率⭐⭐⭐⭐

核心概念

I/O 控制方式是指 CPU 控制 I/O 设备与主机之间数据传送的方式,经历了从简单到复杂的发展过程。

1. 四种 I/O 控制方式

方式CPU 参与程度数据传送单位传送方向
程序查询方式完全参与字/字节CPU ↔ 设备
程序中断方式部分参与字/字节CPU ↔ 设备
DMA 方式很少参与数据块设备 ↔ 内存
通道方式几乎不参与数据块设备 ↔ 内存

2. 程序查询方式(轮询)

  • CPU 不断查询设备状态寄存器
  • 设备就绪后,CPU 逐字/逐字节传送数据
  • CPU 利用率极低,大量时间浪费在查询上
  • 不能实现 CPU 与 I/O 的并行工作
CPU → 查询状态 → 未就绪 → 查询 → ... → 就绪 → 传送一个字 → 查询 → ...

3. 程序中断方式

  • CPU 发出 I/O 命令后继续执行其他程序
  • 设备完成操作后向 CPU 发中断请求
  • CPU 响应中断,执行中断服务程序传送数据
  • 每次中断传送一个字/字节,实现了 CPU 与 I/O 的部分并行
CPU → 启动设备 → 继续执行 → [中断] → 传送一个字 → 返回 → ... → [中断] → ...
优缺点优点:CPU 利用率提高;缺点:每次中断只传一个字,频繁中断开销大。

4. DMA 方式(直接内存访问)

  • CPU 向 DMA 控制器发出命令后,由 DMA 控制器控制数据传送
  • 数据直接在设备和内存之间传送,不经过 CPU
  • 数据块为单位传送;传送完成后 DMA 向 CPU 发中断

DMA 传送过程:① CPU 向 DMA 控制器设置参数(内存地址、数据量、传送方向);② DMA 控制器接管总线控制权;③ 数据在设备和内存之间直接传送;④ 传送完成,DMA 向 CPU 发中断。

DMA 与 CPU 的冲突解决

方式说明
停止 CPU 访存DMA 传送时 CPU 不能访存,CPU 利用率低
周期挪用DMA 在 CPU 不访存的周期插入传送
交替访问DMA 和 CPU 交替使用总线周期

5. 通道方式

  • 通道是专用处理器,有自己的指令系统(通道指令)
  • CPU 向通道发出I/O 指令,指定通道程序的起始地址
  • 通道独立执行通道程序,控制多个设备;传送完成后向 CPU 发中断
类型特点
字节多路通道低速设备,按字节交叉传送
数组选择通道高速设备,一次选择一个设备传送整个数据块
数组多路通道高速设备,按数据块交叉传送

6. 四种方式对比总结

对比项程序查询程序中断DMA通道
CPU 效率最低较低较高最高
并行性部分并行较好并行完全并行
传送单位
复杂度最简单较简单较复杂最复杂
硬件开销最小较小较大最大

关键定义表格

术语定义
中断CPU 暂停当前程序,转去处理紧急事件,处理完后返回
DMA直接内存访问,数据不经过 CPU 直接在设备和内存间传送
通道专用 I/O 处理器,有自己的指令集,可独立控制 I/O 操作
周期挪用DMA 在 CPU 不访存的总线周期插入数据传送
通道指令通道执行的指令,控制 I/O 操作的细节

常见考法

  1. 选择题:四种 I/O 控制方式的特点对比
  2. 选择题:DMA 与 CPU 的冲突解决方式
  3. 选择题:通道类型及其适用设备
  4. 排序题:按 CPU 效率/并行性排序
  5. 综合题:分析某种场景应采用哪种 I/O 控制方式

易错点

注意
  1. DMA 方式中数据不经过 CPU,直接在设备和内存间传送
  2. 中断方式每次中断只传送一个字,DMA 传送一个数据块
  3. DMA 传送完成后才发中断(不像中断方式每次传送都发中断)
  4. 通道是处理器,有自己的指令系统,不是简单的控制器
  5. 周期挪用中,DMA 挪用的是 CPU 不访存的周期,不额外浪费 CPU 时间

核心结论

必背
  1. 四种方式 CPU 效率递增:程序查询 < 程序中断 < DMA < 通道
  2. DMA 的关键优势:数据块传送 + 不经过 CPU
  3. 通道是最高效的方式,但硬件成本最高
  4. 周期挪用是 DMA 和 CPU 访存冲突的最佳折中方案

记忆卡片

四种 I/O 控制方式按 CPU 效率从低到高?
程序查询 → 程序中断 → DMA → 通道。
DMA 和中断方式传送数据有什么区别?
中断每次传送一个字/字节;DMA 以数据块为单位传送,且数据不经过 CPU。
DMA 与 CPU 访存冲突的解决方案?
停止 CPU 访存、周期挪用、交替访问;周期挪用最常用。
通道和 DMA 有什么区别?
DMA 需 CPU 设置参数传一个连续块;通道有自己的指令系统,能独立执行通道程序,可控制多个设备。
程序查询方式为什么 CPU 利用率最低?
CPU 不断轮询设备状态,大部分时间在查询而非做有用计算。

交互动画 · 四种控制方式的 CPU 参与程度

控制方式 CPU 参与程度 → 传送单位 数据路径 程序查询 完全参与(忙等轮询) 字/字节CPU↔设备 程序中断 部分参与 字/字节CPU↔设备 DMA 方式 很少参与 数据块设备↔内存 通道方式 几乎不参与 数据块设备↔内存
点击控制方式,查看 CPU 参与程度阶梯与工作机制
CPU 效率:程序查询 < 程序中断 < DMA < 通道

相关知识点

(暂无关联知识点)

↑ 本页右上「在 Obsidian 中打开」跳回源笔记。