核心定位速记:
-
程序I/O(查询式I/O):CPU全程“盯梢”,主动查询设备状态,全程占用CPU,效率最低。
-
中断驱动I/O:CPU“放手”,设备就绪后发中断通知CPU处理,仅中断时刻占用CPU,适配中低速设备。
-
DMA(直接存储器访问):专用硬件控制器“代劳”数据搬运,CPU仅初始化+结束中断,无CPU数据拷贝,适配高速单设备批量传输。
-
I/O通道:专用I/O处理器,可编程,可管理多设备并发传输,CPU仅发启动指令,干预最少,适配大型机/多设备复杂场景。
四大I/O方式核心差异对比表(408必考)
| 对比项 | 程序I/O(查询式) | 中断驱动I/O | DMA | I/O通道 |
|---|---|---|---|---|
| 核心控制者 | CPU(全程主导) | CPU(仅中断时处理) | DMA控制器(硬件) | 专用I/O通道处理器(可编程) |
| CPU干预程度 | 极高:全程查询+数据拷贝 | 较低:初始化+中断处理 | 极低:仅初始化+传输结束中断 | 最低:仅发通道启动指令+最终中断 |
| 数据传输路径 | CPU寄存器 ↔ I/O设备 | CPU寄存器 ↔ I/O设备 | 内存 ↔ I/O设备(直传) | 内存 ↔ I/O设备(通道调度直传) |
| 传输粒度 | 字节/字(单次1个单位) | 字节/字 | 连续数据块 | 多块数据、非连续地址 |
| 设备管理能力 | 一对一,单次控制一个设备 | 一对一/多对一,可多设备排队 | 一对一,单个设备专属DMA | 一对多,可管理多个设备+控制器 |
| 灵活性 | 最低,硬件固化,无编程性 | 较低,仅中断触发,无自主调度 | 较低,仅连续块传输,参数需CPU重配 | 最高,可编程(通道程序),适配新设备/新流程 |
| 适用场景 | 低速简易设备(LED、按键) | 中低速设备(键盘、打印机、串口) | 高速单设备(磁盘、网卡、显卡) | 大型机/服务器,多设备并发(多磁盘、多外设集群) |
| 效率排序 | 1(最低) | 2 | 3 | 4(最高) |
补充关键细节(易考点)
-
程序I/O 无中断,CPU陷入查询循环,哪怕设备空闲也一直占用CPU,是最原始的I/O方式。
-
中断驱动I/O解决了程序I/O的“忙等”问题,但数据拷贝仍需CPU完成(这是它和DMA的核心区别)。
-
DMA的核心优势是脱离CPU完成数据直传,但它无独立指令集,只能做“搬运工”,不能做调度。
-
I/O通道是DMA的“升级版”:有精简指令集(通道指令),能执行通道程序,相当于给I/O系统配了“小CPU”,实现多设备并发调度。
一句话总结
-
程序I/O:CPU干所有活;
-
中断驱动:CPU干“指挥+收尾”,数据拷贝仍自己来;
-
DMA:CPU干“初始化+收尾”,数据拷贝交给硬件;
-
I/O通道:CPU只“下令”,其余全交给通道处理器。