基本上原文照搬过来吧。主要是原文排版太乱。不利于传播。 随着计算机技术的发展,I/O控制方式也在不断地发展。I/O控制的发展经历了以下四个阶段:
一.程序I/O控制方式
在早期的计算机系统中,由于无中断机构,处理机对I/O设备的控制,采取程序I/O方式(Programmed I/O方式)。在程序I/O方式中,由于CPU的高速性和I/O设备的低速性,致使CPU 的绝大部分时间都处于等待I/O设备完成数据I/O的循环测试中,造成对CPU的极大浪费。在该方式中,CPU之所以要不断地测试I/O设备的状态,就是因为在CPU中无中断机构,使 I/O设备无法向CPU报告它已完成了一个字符的输入操作。如下图所示:
图1.![]}/images/c83bce26670bc565b0fb2eaa4984e5b7575b618a.jpg)
程序I/O方式又称忙–等待方式,即在处理机向设备控制器发出一条I/O指令启动输入设备、输出数据时,要同时把状态寄存器中的忙/闲标志busy置为1,然后便不断地循环测试busy。当busy=1时,表示输入机尚未输完一个字(符),处理机应继续对busy进行测试;直至busy=0,表明输入机已将输入数据送入控制器的数据寄存器中,于是处理机将数据寄存器中的数据取出,送入内存指定单元中,接着,再启动去读下一个数据,并置busy=1。 △ 此方式造成对CPU的极大浪费。
二.中断驱动I/O控制方式
在现代计算机系统中,对I/O设备的控制,广泛采用中断驱动(Interrupt—Driven)方式。在I/O设备输入每个数据的过程中,由于无须CPU干预,因而可使CPU与I/O设备并行工作。仅当输完一个数据时,才需CPU花费极短的时间去做些中断处理。可见,这样可使CPU和I/O设备都处于忙碌状态,从而提高了整个系统的资源利用率及吞吐量。如下图所示:
当某进程要启动某个I/O设备工作时,便由CPU向相应的设备控制器发出一条I/O命令,然后立即返回继续执行原来的任务。设备控制器便按照该命令的要求去控制I/O设备。此时,CPU与I/O设备并行操作。 例如,从终端输入一个字符的时间约为 100ms , 而将字符送入终端缓冲区的时间小于 0.1ms 。 若采用程序 I/O 方式, CPU 约有 99.9ms 的 时间处于忙 — 等待中。 采用中断驱动方式后, CPU 可利用这 99.9 ms 的时间去做其它事情,而仅用 0.1 ms 的时间来处理由控制器发来的中 断请求 。 可见,中断驱动方式可以成百倍地提高 CPU 的利用率。△ 中断驱动方式可以成百倍地提高CPU的利用率。
三.直接存储器访问DMA控制方式
–>DMA控制方式的引入
虽然中断驱动I/O比程序I/O方式更有效,但它是以字(节)为单位进行I/O的,若将这种方式用于块设备的I/O,显然将会是极其低效的。为了进一步减少CPU对I/O的干预,而引入了直接存储器访问(Direct Memory Access)方式。如下图:
图3![]}/images/ee3e0c3ca8d998d2a84488f01d3ca4d6e642f217.jpg)
此方式的特点是: 数据传输的基本单位是数据块;所传输的数据是从设备直接送入内存的,或者相反;整块数据的传送是在控制器的控制下完成的;
可见,DMA方式较之中断驱动方式,又是成百倍地减少了CPU对I/O的干预,进一步提高了CPU与I/O设备的并行操作程度。
–>DMA控制器的组成
DMA控制器由三部分组成,如下图:
图4![]}/images/bbb47eca5cb44fe7cf36bea37349cf6b728e99b5.jpg)
主机与DMA控制器的接口;DMA控制器与块设备的接口;I/O控制逻辑;
为了实现控制器与主机之间成块数据的直接交换,必须在DMA控制器中设四类寄存器,如上图
命令/状态寄存器;内存地址寄存器MAR;数据寄存器DR;数据计数器DC;
–>DMA工作过程
DMA的工作过程如下图:
–>I/O通道控制方式的引入
I/O通道方式是DMA方式的发展,它可进一步减少CPU的干预,即把对一个数据块的读(或写)为单位的干预,减少为对一组数据块的读(或写)及有关的控制和管理为单位的干预。同时,又可实现CPU、通道和I/O设备三者的并行工作,从而更有效的提高了整个系统的资源利用率。
–>通道程序
通道是通过执行通道程序,并与设备控制器来共同实现对I/O设备的控制的。通道程序是由一系列的通道指令(或称通道命令)所构成。通道指令与一般的机器指令不同,在它的每条指令中包含下列诸信息:
操作码—-它规定了指令所执行的操作;内存地址;计数—-表明本条指令所要读(或写)数据的字节数;通道程序结束位P;记录结束标志位R
有几种I/O控制方式?各有何特点?
答:I/O控制方式有四种:程序直接控制方式、中断控制方式、DMA方式和通道控制方式。
(1) 程序直接控制方式:优点是控制简单,不需要多少硬件支持。但CPU和外设只能串行工作,且CPU的大部分时间处于循环测试状态,使CPU的利用率大大降低,因此该方式只适用于那些CPU执行速度较慢且外设较少的系统。
(2) 中断处理方式:优点是能实现CPU与外设间的并行操作,CPU的利用率较程序直接控制方式大大提高。由于在一次数据传送过程中CPU通常以字节为单位进行干预,中断次数较多而耗去大量的CPU时间。
(3) DMA方式:与中断方式相比,DMA方式是在一批数据传送完成后中断CPU,从而大大减少CPU进行中断处理的次数,且DMA方式下的数据传送实在DMA控制下完成的。但DMA方式仍有一定的局限,如对外设的管理和某些操作仍由CPU控制,多个DMA控制器的使用也不经济。
(4) 通道控制方式:CPU只需发出I/O指令,通道完成相应的I/O操作,并在操作结束时向CPU发出中断信号;同时一个通道还能控制多台外设。但是通道价格较高,从经济角度出发不宜过多使用。
参考: http://oa.gdut.edu.cn/os/multimedia/oscai/chapter5/pages/ch52.htm