1. 程序直接控制方式
- 完成一次读写过程:CPU发出IO命令后需要不断轮询
- CPU干预频率:极高
- 每次IO的数据传输单位:字
- 数据流向
- 设备 --> CPU --> 内存
- 内存 --> CPU --> 设备
- 优点:实现简单
- 缺点:CPU和IO设备只能串行工作,CPU需要一直轮询检查长期处于“忙等”状态,CPU占用率低

2. 中断驱动方式
- 完成一次读写过程:CPU发出IO命令后可以做其他事,本次IO完成后设备控制器发出中断信号
- CPU干预频率:高;每次IO操作开始之前、完成之后需要CPU介入
- 每次IO的数据传输单位:字
- 数据流向
- 设备 --> CPU --> 内存
- 内存 --> CPU --> 设备
- 优点:CPU和IO设备可以并行工作,CPU利用率得到明显提升
- 缺点:每个字在IO设备与内存之间传输,都需要经过CPU;频繁的中断处理会消耗较多的CPU时间

注意:
- CPU会在每个指令周期的末尾检测中断
- 中断处理过程中需要保存、恢复进程的运行环境,这个过程是需要一定时间的开销的。如果中断发生的频率太高,也会降低系统性能。
3. DMA方式
- 完成一次读写过程:CPU发出IO命令后可以做其他事,本次IO完成后DMA控制器发出中断信号
- CPU干预频率:中;仅在传送一个或多个数据块的开始和结束时,才需要CPU干预
- 每次IO的数据传输单位:块;每次读写只能时连续的块,且这些块读入内存后在内存中页必须是连续的
- 数据流向
- 设备 --> 内存
- 内存 --> 设备
- 优点:数据的传输不再需要先经过CPU再写入内存,效率进一步提升
- 缺点:CPU每发出一条IO指令,只能读写一个或多个连续的数据块;若需要读写多个离散的数据块,需要多次处理

- DR(Data Register,数据寄存器):暂存从设备到内存,或从内存到设备的数据
- MAR(Memory Address Register,内存地址寄存器):在输入时,MBR表示数据应放到内存中的什么位置;输出时MAR表示要输出的数据放在内存中的什么位置
- DC(Data Counter,数据计数器):表示剩余要读/写的字节数
- CR(Command Register,命令/状态寄存器):用于存放CPU发来的IO命令,或设备的状态信息
4. 通道控制方式
- 完成一次读写过程:CPU发出IO命令后可以做其他事;通道会执行通道程序以完成IO,完成后通道向CPU发出中断信号
- CPU干预频率:低
- 每次IO的数据传输单位:一组块
- 数据流向
- 设备 --> 内存
- 内存 --> 设备
- 优点:CPU、通道、IO设备可并行工作,资源利用率很高
- 缺点:实现复杂,需要专门的通道硬件支持
