设备管理学习之IO控制方式

一、学习IO控制方式之前首先学习IO系统结构组成。

1.大、中、小型计算机的硬件组织

  小型到大型的计算机系统多由中央处理机(CPU)、输入输出处理机(又称通道)、存储器和输入输出设备组成,图1-1是一个典型中型计算机(IBM370)的硬件组织,这类计算机以存储器为中心,CPU和各种通道都与存储器相连,CPU执行的程序和数据都存放在存储器中并从存储器中取来执行。CPU需要与输入输出设备交换数据时,不能直接从输入输出设备中取(或存)数据,它必须命令通道来负责进行管理和控制数据输入输出,把数据输入到存储器或从存储器输出。

 

2.微型计算机的典型组织

  微型计算机是以总线为纽带来构成计算机系统,中央处理机(CPU)、存储器、I/O设备(包括外存磁盘、磁带)都挂接在总线,如图1-2所示。CPU与存储器、CPU与I/O设备之间经过总线来交换信息,而存储器与I/O设备之间信息交换要通过直接存储器访问控制器(DMA)控制经过总线来交换信息。

二、I/O控制方式

  随着计算机技术的发展,I/O控制方式也在发展,经历了程序I/O控制,中断控制,DMA控制和通道控制这四种方式。

(1)程序控制

最简单的I/O控制方式是处理机对I/O设备直接进行控制,采取程序I/O(Programmed I/O)方式或称为忙一等待方式。CPU首先向设备控制器的控制寄存器发出一条I/O指令启动I/O设备进行数据传输,硬件同时把状态寄存器中的忙/闲标志busy置为1,表示该I/O设备尚未输入完一个字(符)。接着CPU应重复读取状态寄存器忙/闲标志busy进行测试(cpu不能执行其他进程),直至busy=0,表示该I/O设备已将输入数据送入到I/O控制器的数据寄存器中,于是CPU将从数据寄存器中取出数据,送入内存的指定单元,接着,再启动去读下一个数据,并置busy=l。

在程序I/O方式中,由于CPU的速度远远高于I/O设备,导致CPU的绝大部分时间都处于等待I/O设备完成而循环测试之中,造成了CPU的极大浪费。但是它管理简单,在要求不高的场合可以被采用。

(2)中断控制

在现代计算机系统中,对I/O设备的控制,广泛地采用中断驱动(Interrupt-Driven)方式,即当某进程要启动某个I/O设备时,便由CPU向相应的设备控制器的控制寄存器发出一条I/O命令,然后立即返回继续执行原来的任务。设备控制器便按照该命令的要求去控制I/O设备。若I/O设备忙,则由驱动程序将请求插入设备等待队列。此时, CPU与I/O设备处于并行工作状态。例如,在输入时,当设备控制器收到 CPU发来的读命令后,便准备接收从相应输入设备送来的数据。一旦数据进入数据寄存器,控制器便通过中断请求线INT向CPU发送一中断信号,中断子程序由CPU读取状态寄存器忙/闲标志busy进行测试检查输入过程中是否出错,若无错,便从数据寄存器中读出数据,写入指定内存单元。

所以,中断驱动方式在I/O设备输入数据的过程中,无需 CPU干预,可以使CPU与I/O设备并行工作。仅当输完一个数据时,才需 CPU花费极短的时间去进行中断处理。从而大大地提高了整个系统的资源利用率及吞吐量,特别是CPU的利用率。

(3)DMA控制

中断驱动I/O方式虽然大大提高了主机的利用率,但是它以字(节)为单位进行数据传送,每完成一个字(节)的传送,控制器便要向CPU请求一次中断(做保存现场信息,恢复现场等工作),仍然占用了CPU的许多时间。这种方式对于高速的块设备的I/O控制显然是不适合。为了进一步减少CPU对I/O的干预,引入了直接存储器访问DMA(Direct Memory Access)控制方式。

DMA方式是一种完全由硬件执行I/O数据交换的工作方式,它需要使用一个专门的DMA控制器(DMAC),内含于设备控制器,DMAC中有控制状态寄存器、传送字节计数器、内存地址寄存器和数据缓冲寄存器。在这种方式中,DMAC采用盗窃总线控制权的方法从CPU接管对总线的控制,成批的数据交换不经过CPU而直接在内存和I/O设备之间进行

DMA方式下的数据传送过程可分为三个阶段:

1) 预处理阶段:当进程要求设备输入数据时,CPU把准备存放输入数据的内存起始地址以及要传送的字节数分别送入DMAC中的内存地址寄存器和传送字节计数器。另外,还把控制状态寄存器中的中断允许位和启动位置成1,从而启动设备,开始进行数据输入。

2) 数据传送阶段:发出数据传输要求的进程进入等待状态,进程调度程序调度其他进程占据CPU。DMAC不断地窃取CPU工作周期,执行数据传送的操作:向内存发出地址和控制信号,进行地址修改,对传送字的个数计数,直到所要求的字节全部传送完毕。   

3) 后处理阶段:DMAC在传送完所有字节时,通过中断请求线发出中断信号。CPU在接收到中断信号后,转入中断处理程序进行后续处理。中断处理结束后,CPU返回到被中断的进程中,或切换到新的进程上下文环境中,继续执行。

DMA方式起到代理cpu的功能,较之中断驱动方式,又是成百倍地减少了CPU对 I/O控制的干预,进一步提高了CPU与I/O设备的并行操作程度。

(4)通道控制方式

1.I/O通道控制方式的引入

虽然 DMA方式比中断驱动方式已显著地减少了CPU的干预,即由以字(节)为单位的干预减少到以数据块为单位的干预。但是CPU每发出一条I/O指令,也只能去读(或写)一个连续的数据块。而当我们需要一次去读多个离散的数据块且将它们分别传送到不同的内存区域,或者相反时,则需由CPU分别发出多条I/O指令及进行多次中断处理,才能完成。

由于DMA每次只能执行一条I/O指令,不能满足复杂的I/O操作要求。在大、中型计算机系统中,普遍采用由专用的I/O处理机---具有执行I/O指令能力的通道来接受CPU的委托,与CPU并行独立执行自己的通道程序来实现I/O设备与内存之间的信息交换,这就是通道技术。通道技术可以进一步减少 CPU的干预,即把对一个数据块为单位的读(或写)的干预,减少到对一组数据块为单位的读(或写)的有关的控制和管理的干预。这样可实现 CPU、通道和I/O设备三者之间的并行工作,从而更有效地提高了整个系统的资源利用率和运行速度。

2.通道程序

通道是通过执行通道程序,并与设备控制器来共同实现对I/O设备的控制。通道程序是由一系列的通道指令(或称为通道命令)所构成。通道指令与一般的机器指令不同,在每条指令中包含的信息较多,有操作码、内存地址、计数(读或写数据的字节数)、通道程序结束位P和记录结束标志R。通道程序是在cpu执行I/O命令时通过设备管理程序产生的,传递给通道。

3.通道类型

由于外围设备的种类较多,且其传输速率相差很大,所以通道也具有多种类型。根据信息交换方式,可以把通道分成以下三种类型:

http://course.cug.edu.cn/cugFirst/computer_composing/study/%B5%DA%B0%CB%D5%C28.4.2.htm

(1)字节多路通道

在这种通道中,通常都含有较多个(8,16,32)非分配型子通道(一个通道连接多个逻辑设备),每一个子通道连接一台I/O设备。这些子通道按时间片轮转方式共享主通道。一个子通道完成一个字节的传送后,立即让出字节多路通道(主通道),给另一个子通道使用。它适用于连接低速或中速设备,如打印机、终端等。

字节多路通道主要用于连接大量的低速设备,如键盘、打印机等等。例如数据传输率是1000B/s,即传送1个字节的间隔是1ms,而通道从设备接收或发送一个字节只需要几百纳秒,因此通道在传送两个字节之间有很多空闲时间,字节多路通道正是利用这个空闲时间为其他设备服务。

(2)数组选择通道

这种通道虽然可以连接多台I/O设备,但是它只有一个分配型通道(连接多个物理设备,但是只能使用一个逻辑设备),在一段时间内只能执行一道通道程序、控制一台设备进行数据传送,其数据传送是按数组块方式进行。选择通道很像一个单道程序的处理器,在一段时间内只允许执行一个设备的通道程序。即当某台设备一旦占用了该通道,就被它独占,直至该设备传送完毕释放该通道为止。可见,它适于连接高速设备(如磁盘机、磁带机),但是这种通道的利用率较低。

(3)数组多路通道

  数组选择通道虽然有很高的传输速率,但它每次只允许一个设备传输数据。数组多路通道是将数组选择通道的传输速率高和字节多路通道的分时并行操作的优点结合起来,形成的一种新的通道。当某设备进行数据传送时,通道只为该设备服务;当设备在执行寻址等控制性动作时,通道暂时断开与这个设备的连接,挂起该设备的通道程序,去为其他设备服务,即执行其他设备的通道程序。它含有多个非分配型子通道,可以连接多台高、中速的外围设备,其数据传送却是按数组方式进行。所以这种通道既具有很高的数据传输速率,又能获得令人满意的通道利用率。

字节多路通道和数组多路通道的不同之处

(1)数组多路通道允许多个设备同时工作,但只允许一个设备进行传输型操作,其他设备进行控制型操作。而字节多路通道不仅允许多个设备同时操作,而且也允许它们同时进行传输型操作。

(2)数组多路通道与设备之间数据传送的基本单位是数据块,通道必须为一个设备传送完一个数据块以后,才能为别的设备传送数据块。而字节多路通道与设备之间数据传送的基本单位是字节,通道为一个设备传送一个字节后,又可以为另一个设备传送一个字节,因此各设备与通道之间的数据传送是以字节为单位交替进行。

4. 通道工作原理

CAW----通道程序的内存起始地址,CCW----通道程序指令寄存器,CSW----存放通道程序结果的寄存器

CPU在执行用户程序时遇到I/O请求,操作系统根据该请求生成通道程序放入内存,并将该通道程序的首地址放入通道地址字CAW中。之后执行“启动I/O”指令,启动通道工作。通道接收到“启动I/O”指令后,从CAW中取出通道程序的首地址,并根据首地址取出第一条指令放入通道命令字CCW中,同时向CPU发回答信号,使CPU可继续执行其他程序,而通道则开始执行通道程序,与CPU并行完成I/O设备数据传输工作。

通道程序指令先通过驱动转化然后通过控制器一起完成实际I/O,启动I/O设备,执行完毕后,如果还有下一条指令,则继续执行。

当通道传输完成最后一条指令时停止工作,向CPU发I/O中断。CPU接收中断信号,执行中断子程序,从通道状态字

CSW中取得有关通道状态信息,决定下一步做什么。

 

posted @ 2012-10-25 17:20  我不是geek  阅读(9834)  评论(1编辑  收藏  举报