1. 有哪几种I/O控制方式各适用于何种场合
共有四种I/O控制方式。
1、程序I/O方式
适用于:早期计算机无中断机构,处理机对I/O设备的控制采用程序I/O方式或称忙等的方式。
2、中断驱动I/O控制方式
适用于:适用于有中断机构的计算机系统中。
3、直接存储器访间(DMA)I/O控制方式
适用于:具有DMA控制器的计算机系统中。
4、I/O通道控制方式
适用于:具有通道程序的计算机系统中。
常见的I/O控制方式:
1、程序直接访问方式跟循环检测IO方式,是最古老的方式。CPU和IO串行,每读一个字节(或字),CPU都需要不断检测状态寄存器的busy标志,当busy=1时,表示IO还没完成;当busy=0时,表示IO完成。此时读取一个字的过程才结束,接着读取下一个字。
2、中断控制方式:循环检测先进些,IO设备和CPU可以并行工作,只有在开始IO和结束IO时,才需要CPU。但每次只能读取一个字。
3、DMA方式:Direct Memory Access,直接存储器访问,比中断先进的地方是每次可以读取一个块,而不是一个字。
4、通道方式:比DMA先进的地方是,每次可以处理多个块,而不只是一个块。
分类依据:
现代计算机系统中总是配备有各种外部设备,他们都在CPU控制下进行工作。CPU对外部设备的控制方式主要有以下四种。
1、程序I/O方式
程序查询方式也称为程序轮询方式,该方式采用用户程序直接控制主机与外部设备之间输入/输出操作。
CPU必须不停地循环测试I/O设备的状态端口,当发现设备处于准备好(Ready)状态时,CPU就可以与I/O设备进行数据存取操作。这种方式下的CPU与I/O设备是串行工作的,输入/输出一般以字节或字为单位进行。
这个方式频繁地测试I/O设备,I/O设备的速度相对来说又很慢,极大地降低了CPU的处理效率,并且仅仅依靠测试设备状态位来进行数据传送,不能及时发现传输中的硬件错误。但是这种方式的过程很简单,易理解,并且不需要额外硬件。
2、中断驱动I/O控制方式
当I/O设备结束(完成、特殊或异常)时,就会向CPU发出中断请求信号,CPU收到信号就可以采取相应措施。
当某个进程要启动某个设备时,CPU就向相应的设备控制器发出一条设备I/O启动指令,然后CPU又返回做原来的工作。CPU与I/O设备可以并行工作,与程序查询方式相比,大大提高了CPU的利用率。但是在中断方式下,同程序查询方式一样,也是以字节或字为单位进行。
但是该方法大大降低了CPU的效率,因为当中断发生的非常频繁的时候,系统需要进行频繁的中断源识别、保护现场、中断处理、恢复现场。这种方法对于以“块”为存取单位的块设备,效率是低下的。
3、直接存储器访间(DMA)I/O控制方式
DMA方式也称为直接主存存取方式,其思想是:允许主存储器和I/O设备之间通过“DMA控制器(DMAC)”直接进行批量数据交换,除了在数据传输开始和结束时,整个过程无须CPU的干预。每传输一个“块”数据只需要占用一个主存周期。
DMA方式下,一个完整的数据传输过程:
1)DMA初始化
当进程需要I/O设备进行数据输入输出时,CPU对DMA控制器初始化,并向I/O端口发出操作命令,提供准备传输的数据起始地址,需要传送的数据长度等信息送入到DMA控制器中的主存地址寄存器和传送字节计数器中。
2)DMA传输
DMA控制器获得总线控制权后,进行输出读写命令,直接控制主存与I/O设备之间的传输。在DMA控制器的控制下,数据传输过程中不需要CPU的参与。
3)DMA结束
当完成本次数据传输后,DMA控制器释放总线控制权,并向I/O设备端口发出结束信号。
4、I/O通道控制方式
通道(Channel)也称为外围设备处理器、输入输出处理机,是相对于CPU而言的。是一个处理器。也能执行指令和由指令的程序,只不过通道执行的指令是与外部设备相关的指令。
是一种实现主存与I/O设备进行直接数据交换的控制方式,与DMA控制方式相比,通道所需要的CPU控制更少,一个通道可以控制多个设备,并且能够一次进行多个不连续的数据块的存取交换,从而大大提高了计算机系统效率。