1.程序直接控制方式
完成一次读/写的过程 | CPU千预频率 | 每次I/O的数据传输单位 | 数据流向 | 优缺点 |
CPU发出I/0命令后需要不断轮询 | 极高 | 字 | 设备→CPU→内存 内存→CPU→设备 | 优点:实现简单。在读/写指令之后,加上实现循环检查的一系列指令即可(因此才称为“程序直接控制方式”) 缺点:CPU和I/0设备只能串行工作,CPU需要一直轮询检查长期处于“忙等”状态,CPU利用率低。 |
2.中断驱动方式
完成一次读/写的过程 | CPU千预频率 | 每次I/O的数据传输单位 | 数据流向 | 优缺点 |
CPU发出I/0命令后可以做其他事,本次I/0完成后设备控制器发出中断信号 | 高 | 字 | 设备→CPU→内存 内存→CPU→设备 | 优点:与“程序直接控制方式”相比,在“中断驱动方式”中,/0控制器会通过中断信号主动报告I/0已完成,CPU不再需要不停地轮询。CPU和I/O设备可并行工作,CPU利用率得到明显提升。 缺点:每个字在I/0设备与内存之间的传输,都需要经过CPU。而频繁的中断处理会消耗较多的CPU时间。 |
3.DMA方式
完成一次读/写的过程 | CPU千预频率 | 每次I/O的数据传输单位 | 数据流向 | 优缺点 |
CPU发出I/0命令后可以做其他事,本次I/0完成后DMA控制器发出中断信号 | 中 | 每次读/写一个或多个块(注意:每次读写的只能是连续的多个块,且这些块读入内存后在内存中也必须是连续的) | 设备→内存 内存→设备 | 优点:数据传输以“块”为单位,CPU介入频率进一步降低。数据的传输不再需要先经过CPU再写入内存,数据传输效率进一步增加。CPU和I/O设备的并行性得到提升。 缺点:CPU每发出一条I/0指令,只能读/写一个或多个连续的数据块。 |
DMA控制器
DR(Data Register,数据寄存器):暂存从设备到内存,或从内存到设备的数据。
MAR(Memory Address Register,内存地址寄存器):在输入时,MAR表示数据应放到内存中的什么
位置;输出时 MAR表示要输出的数据放在内存中的什么位置。
DC(Data Counter,数据计数器):表示剩余要读/写的字节数。
CR(Command Register,命令/状态寄存器):用于存放CPU发来的I/0命令,或设备的状态信息。
4.通道控制方式
①CPU向通道发出I/0指令。指明通道程序在内存中的位置,并指明要操作的是哪个!/O设备。之后CPU就切换到其他进程执行了
②)通道执行内存中的通道程序(其中指明了要读入/写出多少数据,读/写的数据应放在内存的什么位置等信息)
③通道执行完规定的任务后,向CPU发出中断信号,之后CPU对中断进行处理
完成一次读/写的过程 | CPU千预频率 | 每次I/O的数据传输单位 | 数据流向 | 优缺点 |
CPU发出I/0命令后可以做其他事。通道会执行通道程序以完成I/0,完成后通道向CPU发出中断信号 | 低 | 一组块 | 设备→内存 内存→设备 | 缺点:实现复杂,需要专门的通道硬件支持 优点:CPU、避道、I/0设备可并行工作,资源利用率很高 |