I/O结构
在一台计算机系统中,可能有大量的外部设备,为了满足对这些I/O设备的控制,提高处理器和外部设备的运行效率,出现了各种不同的I/O硬件结构。
在每台外部设备中都配有各自的I/O设备控制器,由I/O设备控制器分别控制各台外部设备的运行。在Ⅳ0设备控制器与处理器之间的0硬件结构,则有不同的设计方案。
在早期的计算机系统中,外部设备的控制器通过L0硬件结构与中央处理器连接。对设备控制器的操作是由处理器直接发出的I/O指令来实现的。在这种方法中,中央处理器定期轮询各个I/O设备控制器的状态。如果有I/O处理请求,中央处理器就处理I/O操作,直到该I/O处理完毕。这种程序直接控制I/O的主要缺陷是,处理器为了关注I/O设备控制器的状态,必须耗费大量的时间轮询各个外部设备以获得这些信息,这就严重地降低了整个系统的性能。这种早期I/O结构,由于效率太低,已经淘汰。
2.通道
通道是独立于中央处理器的,专门负责数据I/O传输工作的处理单元。从现代计算机系统的结构上看,各种外部设备均配有相应的设备控制器,这些设备控制器再通过通道连接在计算机系统的公共系统总线上。
通道对外部设备实行统一的管理,它代替处理器对I/O操作进行控制,从而使处理器和外部设备可以并行工作。所以通道又称为I/O处理器。
下面介绍通道的具体工作原理。
在采用通道的计算机系统运行过程中,中央处理器按程序规定的顺序执行一条条指令。当处理器执行到一条“启动外设”(“启动I/O”)的指令时,就按指令中给定的参数启动指
定的设备。
设备启动之后,对该外部设备的控制权转移到通道,由通道控制该外部设备的有关操作。
在该外部设备与内存储器之间发生的信息传送,由通道控制,而中央处理器则继续执行程序。可见,这时处理器与外部设备是并行工作的,外部设备独立工作,不需要中央处理器
的干预。
在该外部设备工作结束后,会产生形成一个“输入输出操作结束”的I/O中断事件。这是因为该外部设备是由处理器根据程序的要求而启动的,所以仍由操作系统的处理程序处理这个1O中断事件。操作系统进行分析后,就可以知道外部设备的具体工作情况。
采用通道这种I/O结构的最大优点是,可以实现中央处理器和各种外部设备并行工作。
采用通道之后,处理器和外部设备都能够访问内存储器。不过,当处理器和外部设备同时申请访问内存储器时,就要竞争存储周期。由内存储器的控制线路处理这些竞争,并保证
这些访问同步有序进行。
有了通道,利用处理器与外部设备之间以及各外部设备之间的并行工作能力,操作系统就可以让多个程序同时执行,并在同一时刻让各个程序分别使用计算机系统的不同资源。
举例来说,如果程序A启动了某个硬盘设备读取一块数据,它必须等待该硬盘设备完成信息传送后才能继续执行。此刻该程序A处于等待状态,暂停执行指令。这时操作系统可以让另一个程序B占用中央处理器运行。当然程序B在执行时也可能申请使用某个外部设备,若程序B启动了一台DVD设备也等待信息传送,那么操作系统可以调用程序C占用中央处理器运行。从这里可以看到,有了通道,多道程序的运行使得处理器和外部设备的运行效率都得到了提高。
通道技术一般用于大型机系统和对I/O处理能力要求比较严格的系统中。
DMA技术
直接存储器访问( Direct Memory Access,MA)技术通过系统总线中的一个独立控制单元————DMA控制器,自动地控制成块数据在内存和0单元之间的传送。当处理器需要读写一整块数据的时候,它给DMA控制单元发送一条命令,在命令中通常包含了I/O设备的编址、开始读或写的内存编址、需要传送的数据长度、是否请求一次读或写等信息。处理器在给DMA控制单元发送完一条命令之后,就可以处理其他的事情了。而DMA控制器将自动管理整块数据的传送。当这个传送过程完成后,它会给处理器发一个中断。这样处理器只需要在整块数据开始传送和传送结束时关注一下就可以了。可见DMA技术大大提高了处理I/O的效能。
不过,处理器和DMA传送也不是完全并行的,它们之间会有总线竞争的情况发生,此时总线上正在进行DMA传送,而处理器也想使用总线。不过这种总线竞争不会引起中断,也不会引起程序上下文的保存,通常这个过程只会使用一个总线周期,于是处理器会稍微等待。也就是说,在DMA传送发生时,处理器访问总线的速度会有所变慢。尽管如此,对于有大量数据的I/O传送来说,DMA技术是很有价值的。
缓冲技术
缓冲技术是用在外部设备与其他硬件部件之间的一种数据暂存技术,它利用存储器件在外部设备中设置了数据的一个存储区域,称为缓冲区。缓冲技术一般有两种用途,一种是用在外部设备与外部设备之间的通信上的,还有一种是用在外部设备和处理器之间的。
例如,在人们使用键盘输入数据时,输入速度是很慢的,再快的专业数据输入员,每秒钟击键的次数也很难超过10次。如果让处理器等待这样缓慢的数据输入完成之后,再进行处理,显然效率太低了。有了缓冲区就可减少输入输出的次数。当我们从键盘输入设备输入数据时,通常是先把数据送入到键盘数据缓冲区中,然后处理器再把数据从缓冲区读入用户工作区中进行处理。
采用缓冲技术最根本的原因是,处理器处理数据速度与设备传输数据速度不相匹配,需要用缓冲区缓解其间的速度矛盾。
那么为什么不直接把数据送入用户工作区,而要设置缓冲区来暂存呢?如果把用户工作区直接作为缓冲区则有许多不便。
首先,当一个用户从工作区向设备输出或从设备向工作区输入时,工作区被长期占用而使其他用户无法使用。
其次,为了减少输入输出次数,以减轻对通道和输入输出设备的压力。
第三,缓冲区信息可供多个用户共同使用以及反复使用,减少了不必要的信息传递工作,提高了效率,方便了对缓冲区的管理,为了提高设备利用率,通常使用单个缓冲区是不够的,可以设置双缓冲区,甚至多缓冲区。
比如,在单缓冲区情况下,当外部设备向缓冲区输入数据装满之后,必须等待处理器将其取完,才能继续向其中输入数据。如果有两个缓冲区,在一个缓冲区等待处理器取用数据时,另一个可以继续接收数据,这样设备利用率可大为提高。