4种IO控制方式
计算机系统中I/O输入/输出控制方式主要经历了从 CPU 高度干预到 CPU 逐渐解脱的演进过程。目前主要有以下四种方式1. 程序直接控制方式 (Programmed I/O)也称为程序轮询方式。这是最原始的一种控制方式。工作原理CPU 向设备发送指令后会通过“忙等”Busy-waiting不断查询设备状态寄存器中的标志位。只有当设备准备好CPU 才进行数据读写。特点优点实现简单不需要额外的硬件支持。缺点CPU 必须全程等待造成资源极大浪费无法处理并发任务。 [1, 2, 3, 4]2. 中断驱动方式 (Interrupt-Driven I/O)为了解决 CPU 的“无用等待”问题引入了中断机制。工作原理CPU 发出 I/O 命令后立即去执行其他程序。当 I/O 设备准备好数据或完成操作时向 CPU 发出中断信号。CPU 暂停当前工作转去处理 I/O 传输。特点优点提高了 CPU 的利用率实现了 CPU 与设备的并行工作。缺点对于高速设备或大批量数据频繁的中断处理仍会显著占用 CPU 时间。 [3, 4, 5, 6]3. 直接内存存取方式 (DMA)这是现代高性能系统中最常用的方式。工作原理引入专用的 DMA 控制器。CPU 仅需告诉控制器“从哪读、读多少、存到内存哪里”随后由 DMA 控制器接管总线直接在设备与内存之间搬运数据每次传输一个数据块。只有在数据块传输完成后才会发中断通知 CPU。特点数据单位以“块”为单位进行传输而非字节。优点大大减少了 CPU 的干预仅在开始和结束时介入。 [3, 5, 7]4. I/O 通道控制方式 (I/O Channel)DMA 的进一步升级版相当于给 I/O 系统配了一个“小 CPU”。工作原理通道是一个专门负责 I/O 操作的处理器拥有自己的指令集通道程序。CPU 只需启动通道通道会自动执行程序管理多个设备与内存的数据交换。特点优点CPU 的干预程度降到最低能有效管理复杂的 I/O 网络支持多设备并行处理。 [3, 8, 9]四种方式对比总结特性程序直接控制中断驱动DMA 方式通道方式CPU 干预极高全程等待较高每个字/字节中断低每块数据中断极低完成一组任务中断传输单位字/字节字/字节数据块多个数据块控制主体CPUCPUDMA 控制器通道处理器[1] https://zhuanlan.zhihu.com[2] https://edu.51cto.com[3] https://baike.baidu.com[4] https://blog.csdn.net[5] https://zhuanlan.zhihu.com[6] https://bbs.huaweicloud.com[7] https://juejin.cn[8] https://cloud.tencent.com[9] https://developer.aliyun.com