1.程序直接控制方式
(1)读操作的流程
1)CPU向I/O控制器发出读指令。I/O控制器启动,将自身状态置为忙碌态。CPU一直轮询检查I/O控制器的状态
2)I/O控制器启动CPU指定的I/O设备,并将该I/O设备的状态置为忙碌态
3)I/O设备准备好数据后将数据传给I/O控制器,并报告自身状态
4)I/O控制器将数据读入数据寄存器,并将自身状态置为完成态
5)CPU检查到I/O控制器的状态为完成态,则将I/O控制器的数据寄存器中的数据读入CPU的数据寄存器,再读入内存
(2)特点
特点 | 描述 |
---|---|
CPU干预频率 | 在I/O操作之前、之后需要CPU的介入,并且在等待I/O完成的过程中CPU需要不断地轮询检查I/O操作是否完成 |
数据传输单位 | 字 |
数据流向 | 读操作:I/O设备->CPU->内存; 写操作:内存->CPU->I/O设备 |
优点 | 实现简单,在读/写指令之后,加上实现循环检查的一系列指令即可 |
缺点 | CPU和I/O操作只能串行工作,CPU需要一直轮询检查导致CPU的利用率低 |
2.中断驱动方式
引入中断机制。由于I/O设备速度很慢,因此在CPU发出读/写命令后,可将等待I/O的进程阻塞,先切换到别的进程执行。当I/O完成后,控制器会向CPU发送一个中断信号,CPU检测到中断信号以后,会保存当前进程的运行环境信息,转去执行中断处理程序处理该中断。处理中断的过程中,CPU从I/O控制器读取一个字的数据传送到CPU寄存器,再写入主存。接着,CPU恢复等待I/O的进程的运行环境,然后继续执行
(1)读操作的流程
1)CPU向I/O控制器发出读指令。CPU将等待I/O的进程阻塞,然后切换到别的进程执行
2)I/O完成后,I/O控制器会向CPU发出一个中断信号
3)CPU检测到中断信号,转去执行中断处理程序处理该中断。处理中断的过程中,CPU从I/O控制器读一个字的数据传送到CPU寄存器,再写入内存
4)CPU恢复等待该I/O操作的进程的运行环境,然后继续执行
(2)特点
特点 | 描述 |
---|---|
CPU干预频率 | 在I/O操作之前、之后需要CPU的介入 |
数据传输单位 | 字 |
数据流向 | 读操作:I/O设备->CPU->内存; 写操作:内存->CPU->I/O设备 |
优点 | 与程序直接控制方式相比,I/O控制器会通过中断信号主动报告I/O已完成,CPU不再需要不停地轮询。CPU和I/O设备可并行工作,CPU利用率得到明显提升 |
缺点 | 每个字在I/O设备与内存之间传输,都需要经过CPU。而频繁的中断处理会消耗较多的CPU时间 |
3.DMA方式
Direct Memory Access,直接存储器存取,主要用于块设备的I/O控制,数据传送单位是块
(1)读操作的流程
1)CPU给DMA发出读操作的指令,然后CPU切换到其他进程去执行(注:指令指明此次操作的类型,并说明要读入多少数据,数据要存放在内存的什么位置、数据在外部设备上的地址)
2)DMA完成读指令后,DMA向CPU发出中断信号
(2)特点
特点 | 描述 |
---|---|
CPU干预频率 | 仅在传送一个或多个数据块的开始和结束时,才需要CPU干涉 |
数据传输单位 | 一个或多个连续的块 |
数据流向 | 读操作:I/O设备->内存; 写操作:内存->I/O设备 |
优点 | 与程序直接控制方式相比,I/O控制器会通过中断信号主动报告I/O已完成,CPU不再需要不停地轮询。CPU和I/O设备可并行工作,CPU利用率得到明显提升 |
缺点 | 每次读写只能是一个或多个连续的块且这些块读入内存后在内存中也必须是连续的 |
4.通道控制方式
通道是一种硬件,可以识别并执行一系列通道指令
(1)读操作的流程
1)CPU向通道发出I/O指令(指令指明通道程序在内存中的位置,并指明要操作的是哪个I/O设备),然后CPU切换到其他进程去执行
2)通道执行内存中的通道程序(指明了要读/写多少数据,读/写的数据应放在内存的什么位置等信息
3)通道执行完指令后,向CPU发送一个中断信号
(2)特点
特点 | 描述 |
---|---|
CPU干预频率 | 极低,通道会根据CPU的指示执行相应的通道程序,只有完成一组数据块的读/写后才需要发出中断信号,请求CPU干预 |
数据传输单位 | 一组块 |
数据流向 | 读操作:I/O设备->内存; 写操作:内存->I/O设备 |
优点 | CPU,通道,I/O设备可并行工作,资源利用率很高 |
缺点 | 实现复杂,需要专门的通道硬件支持 |