I/O传输的几种方式
程序查询方式
由CPU通过程序不断查询I/O设备是否已做好准备,从而控制I/O设备与主机交换信息。
在这种方式下,I/O接口需要设置一个反应设备是否准备就绪的状态标记,CPU借此得知I/O设备是否准备完成。
若I/O设备没有就绪,CPU会不断查询其状态,若已就绪,则将数据从I/O接口送至CPU,再由CPU传送至主存,一字一字传送,直至整个数据块传送完成,CPU重新执行访问I/O设备前的原程序。
这个查询方式的弊端是如果设备状态未就绪CPU会一直踏步等待,影响CPU的执行效率。
程序中断方式
CPU在启动I/O设备后,不查询设备是否已准备就绪,继续执行自身程序,只在设备准备就绪并向CPU发出中断请求后予以响应。这样可以避免CPU出现“踏步”现象,提高CPU的利用率。
在这种方式下,CPU在向I/O设备发送读命令后,不会等待,而是继续执行原本的程序。只有收到I/O设备的请求后才会将从接口读数据至CPU再至主存(依赖中断程序服务实现),依次循环直到数据传输完成。
这个方式CPU的利用率大大提高,但是CPU和I/O接口不仅在硬件方面需增加相应的电路,而且在软件方面还必须编制中断服务程序。
DMA方式
该方式中,主存与I/O设备之间有一条数据通路,主存与I/O设备交换信息时,无须调用中断程序。
DMA和CPU一起访问主存时,DMA有绝对优先权,称为窃取或挪用。此时的CPU可以进行其他操作,一般持续时间为一个存取周期。
其他方式还有I/O通道方式和I/O处理机方式。
程序查询方式示意图 程序中断方式示意图