在I/O控制方式的整个发展中,始终贯穿的宗旨是:尽量减少主机对I/O控制的干预,把主机从繁杂的I/O控制事务中解放出来,以便更多地完成数据处理任务
- 采用轮训的可编程方式
在程序I/O方式中,CPU的绝大部分处理时间都处于等待I/O设备完成数据I/O的循环测试,对CPU造成了极大的浪费,在该方式中,CPU要不停地测试I/O设备的状态,因为CPU中无中断结构,使I/O设备无法向CPU报告已完成了一个字符的输入操作 - 采用中断的可编程方式
当前,对I/O设备控制,广泛采用可中断的I/O编程方式。
当某进程要启动某个设备工作时,便由CPU向相应的设备控制器发出一条I/O命令,然后立即返回执行原来的任务。设备控制器于是按照命令的要求去控制指定的I/O设备。此时,CPU与I/O并行操作。
在输入时,设备控制器接收从CPU发来的读命令,便去控制相应的设备读数据。一旦数据传入数据寄存器,控制器便通过控制总线向CPU发送中断信号,由CPU检查输入过程是否出错,若无措,便向控制器发送取走数据的信号,再通过控制器及数据线,将数据写入指定单元。
在I/O设备输入每个数据的过程中,可使CPU与I/O设备并行工作。仅当输完一个数据时,才需CPU花费极短的时间去做中断处理 - 直接存储器访问方式
虽然中断驱动I/O比程序I/O方式更有效,但它仍然以字节为传输单位进行I/O的,每当完成一个字节的I/O时,控制器便向CPU请求一次中断。
如果将这种方式运用于块设备的I/O,效率极低。例如:为了从磁盘中读出1KB的数据块,需要中断CPU1K次。
直接存储器访问方式:
数据传输的基本单位是数据块,即在CPU与I/O设备之间,每次至少传输一个数据块。
所传送的数据,都是从设备直接送入内存的,或者相反。
仅在传送一个或多个数据块的开始和结束,才需要CPU的干预,数据块的传送是在控制器的干预下完成的
所以DMA方式较中断方式,又进一步提高了CPU与I/O设备的并行速度 - I/O通道控制方式
虽然DMA方式比起中断方式,已经减少了CPU的干预(以字节为单位的干预减少到了以数据块为单位的干预),但CPU每发出一条I/O指令,也只能去读或写一组连续的数据块。
当我们需要一次去读多个数据块且它们分别位于不同的内存区,则需要由CPU分别发出多条I/O指令及中断处理才能完成。
I/O通道方式是DMA方式的发展,把对一个数据块的读或写为单位的干预,减少为对一组数据块的读或写以及有关的控制和管理为单位的干预。
可实现CPU、通道、I/O设备三者的并行操作
例如:CPU要完成一组相关的读或写操作及有关控制,只需要向I/O通道发一条I/O指令