版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第8章章 设备管理设备管理8.1 引言引言8.2 数据传送控制方式数据传送控制方式8.3 中断技术中断技术8.4 缓冲技术缓冲技术8.5 设备分配设备分配8.6 I/O进程控制进程控制8.7 设备驱动程序设备驱动程序本章小结本章小结习题习题本章主要讨论设备管理的基本概念,包括中断、本章主要讨论设备管理的基本概念,包括中断、缓冲、设备分配和控制等。缓冲、设备分配和控制等。8.1 引引 言言8.1.1 设备的类别设备的类别外部设备外部设备=除了除了CPU和内存之外其他的硬设备和内存之外其他的硬设备. 它包括常用的输入输出设备、外存设备以及终端设备它包括常用的输入输出设备、外存设备以及终端设备等。
2、等。图图8.1 按使用特性对外部设备的分类按使用特性对外部设备的分类除了上述分类方法之外,在有的系统中还按信息除了上述分类方法之外,在有的系统中还按信息组织方式来画分设备。例如,组织方式来画分设备。例如,UNIX系统就把外部设系统就把外部设备画分为字符设备和块设备。键盘、终端、打印机等备画分为字符设备和块设备。键盘、终端、打印机等以字符为单位组织和处理信息的设备被称为字符设备;以字符为单位组织和处理信息的设备被称为字符设备;而磁盘、磁带等以字符块为单位组织和处理信息的设而磁盘、磁带等以字符块为单位组织和处理信息的设备被称为块设备。备被称为块设备。8.1.2 设备管理的功能和任务设备管理的功能和
3、任务设备管理是对计算机输入输出系统的管理。设备管理是对计算机输入输出系统的管理。 (1) 选择和分配输入输出设备以进行数据传输操作;选择和分配输入输出设备以进行数据传输操作;(2) 控制输入输出设备和控制输入输出设备和CPU(或内存)之间交换数(或内存)之间交换数据;据;(3) 为用户提供友好的透明接口,把用户和设备硬件为用户提供友好的透明接口,把用户和设备硬件特性分开,使得用户在编制应用程序时不必涉及具体设备,特性分开,使得用户在编制应用程序时不必涉及具体设备,系统按用户要求控制设备工作。另外,这个接口还为新增系统按用户要求控制设备工作。另外,这个接口还为新增加的用户设备提供一个和系统核心相
4、连接的入口,以便用加的用户设备提供一个和系统核心相连接的入口,以便用户开发新的设备管理程序;户开发新的设备管理程序;(4) 提高设备和设备之间、提高设备和设备之间、CPU和设备之间,以及进和设备之间,以及进程和进程之间的并行操作度,以使操作系统获得最佳效率。程和进程之间的并行操作度,以使操作系统获得最佳效率。为了完成上述主要任务,设备管理程序一般要提为了完成上述主要任务,设备管理程序一般要提供下述功能:供下述功能:(1) 提供和进程管理系统的接口。当进程要求设提供和进程管理系统的接口。当进程要求设备资源时,该接口将进程要求转达给设备管理程序;备资源时,该接口将进程要求转达给设备管理程序;(2)
5、 进行设备分配。按照设备类型和相应的分配进行设备分配。按照设备类型和相应的分配算法把设备和其他有关的硬件分配给请求该设备的进算法把设备和其他有关的硬件分配给请求该设备的进程,并把未分配到所请求设备或其他有关硬件的进程程,并把未分配到所请求设备或其他有关硬件的进程放入等待队列;放入等待队列;(3) 实现设备和设备、设备和实现设备和设备、设备和CPU等之间的并行等之间的并行操作。这需要有相应的硬件支持。操作。这需要有相应的硬件支持。(4) 进行缓冲区管理。一般来说,进行缓冲区管理。一般来说,CPU的执行速的执行速度和访问内存速度都比较高,而外部设备的数据流通度和访问内存速度都比较高,而外部设备的数
6、据流通速度则低得多(例如键盘),为了减少外部设备和内速度则低得多(例如键盘),为了减少外部设备和内存与存与CPU之间的数据速度不匹配的问题,系统中一之间的数据速度不匹配的问题,系统中一般设有缓冲区(器)来暂放数据。设备管理程序负责般设有缓冲区(器)来暂放数据。设备管理程序负责进行缓冲区分配、释放及有关的管理工作。进行缓冲区分配、释放及有关的管理工作。8.2 数据传送控制方式数据传送控制方式设备管理的主要任务之一是控制设备和内存或设备管理的主要任务之一是控制设备和内存或CPU之间的数据传送。之间的数据传送。选择和衡量控制方式有如下几条原则:选择和衡量控制方式有如下几条原则:(1) 数据传送速度足
7、够高,能满足用户的需要但数据传送速度足够高,能满足用户的需要但又不丢失数据;又不丢失数据;(2) 系统开销小,所需的处理控制程序少;系统开销小,所需的处理控制程序少;(3) 能充分发挥硬件资源的能力,使得能充分发挥硬件资源的能力,使得I/O设备尽设备尽量忙,而量忙,而CPU等待时间少。为了控制等待时间少。为了控制I/O设备和内存设备和内存之间的数据交换,每台外围设备都按一定规律编码。之间的数据交换,每台外围设备都按一定规律编码。而且,设备和内存与而且,设备和内存与CPU之间有相应的硬件接口支之间有相应的硬件接口支持同步控制、设备选择以及中断控制等。持同步控制、设备选择以及中断控制等。外围设备和
8、内存之间的常用数据传送控制方式有外围设备和内存之间的常用数据传送控制方式有4种。即:种。即:(1) 程序直接控制方式;程序直接控制方式;(2) 中断控制方式;中断控制方式;(3) DMA方式;方式;(4) 通道方式。通道方式。8.2.1 程序直接控制方式程序直接控制方式就是由用户进程来直接控制内存或就是由用户进程来直接控制内存或CPU和外围和外围设备之间的信息传送。这种方式的控制者是用户进程。设备之间的信息传送。这种方式的控制者是用户进程。当用户进程需要数据时,它通过当用户进程需要数据时,它通过CPU发出启动设备发出启动设备准备数据的启动命令准备数据的启动命令“Start”,然后,用户进程进入
9、,然后,用户进程进入测试等待状态。在等待时间内,测试等待状态。在等待时间内,CPU不断地用一条不断地用一条测试指令检查描述外围设备的工作状态的控制状态寄测试指令检查描述外围设备的工作状态的控制状态寄存器。而外围设备只有将数据传送的准备工作作好之存器。而外围设备只有将数据传送的准备工作作好之后,才将该寄存器置为完成状态。从而,当后,才将该寄存器置为完成状态。从而,当CPU检检测到控制状态寄存器为完成状态,也就是该寄存器发测到控制状态寄存器为完成状态,也就是该寄存器发出出“Done”信号之后,设备开始往内存或信号之后,设备开始往内存或CPU传送数传送数据。反之,当用户进程需要向设备输出数据时,也必
10、据。反之,当用户进程需要向设备输出数据时,也必须同样发启动命令启动设备和等待设备准备好之后才须同样发启动命令启动设备和等待设备准备好之后才能输出数据。能输出数据。除了控制状态寄存器之外,在除了控制状态寄存器之外,在I/O控制器中还有控制器中还有一类称为数据缓冲寄存器的寄存器。在一类称为数据缓冲寄存器的寄存器。在CPU与外围与外围设备之间传送数据时,输入设备每进行一次操作,首设备之间传送数据时,输入设备每进行一次操作,首先把所输入的数据送入该寄存器,然后,先把所输入的数据送入该寄存器,然后,CPU再把再把其中数据取走。反之,当其中数据取走。反之,当CPU输出数据时,也是先输出数据时,也是先把数据
11、输出到该寄存器之后,再由输出设备将其取走。把数据输出到该寄存器之后,再由输出设备将其取走。只有数据装入该寄存器之后,控制状态寄存器的值才只有数据装入该寄存器之后,控制状态寄存器的值才会发生变化。程序直接控制方式的控制流程如图会发生变化。程序直接控制方式的控制流程如图8.2。图图8.2 程序直接控制方式程序直接控制方式程序直接控制方式虽然控制简单,也不需要多少程序直接控制方式虽然控制简单,也不需要多少硬件支持,但是,明显地存在下述缺点:硬件支持,但是,明显地存在下述缺点:(1) CPU和外围设备只能串行工作。由于和外围设备只能串行工作。由于CPU的的处理速度要大大高于外围设备的数据传送和处理速度
12、,处理速度要大大高于外围设备的数据传送和处理速度,所以,所以,CPU的大量时间都处于等待和空闲状态。这的大量时间都处于等待和空闲状态。这使得使得CPU的利用率大大降低;的利用率大大降低;(2) CPU在一段时间内只能和一台外围设备交换在一段时间内只能和一台外围设备交换数据信息,从而不能实现设备之间的并行工作;数据信息,从而不能实现设备之间的并行工作;(3) 由于程序直接控制方式依靠测试设备标志触由于程序直接控制方式依靠测试设备标志触发器的状态位来控制数据传送,因此无法发现和处理发器的状态位来控制数据传送,因此无法发现和处理由于设备或其他硬件所产生的错误。所认,程序直接由于设备或其他硬件所产生的
13、错误。所认,程序直接控制方式只适用于那些控制方式只适用于那些CPU执行速度较慢,而且外执行速度较慢,而且外围设备较少的系统。围设备较少的系统。8.2.2 中断方式中断方式为了减少程序直接控制方式中为了减少程序直接控制方式中CPU等待时间以等待时间以及提高系统的并行工作程度,中断及提高系统的并行工作程度,中断(interrupt)方式被方式被用来控制外围设备和内存与用来控制外围设备和内存与CPU之间的数据传送。之间的数据传送。这种方式要求这种方式要求CPU与设备与设备(或控制器或控制器)之间有相应的中之间有相应的中断请求线,而且在设备控制器的控制状态寄存器的相断请求线,而且在设备控制器的控制状态
14、寄存器的相应的中断允许位。中断方式的传送结构如图应的中断允许位。中断方式的传送结构如图8.3所示。所示。从而,数据的输入可按如下步骤操作。从而,数据的输入可按如下步骤操作。(1) 首先,进程需要数据时,通过首先,进程需要数据时,通过CPU发出发出“Start”指令启动外围设备准备数据。该指令同时还指令启动外围设备准备数据。该指令同时还将控制状态寄存器中的中断允许位打开,以便在需要将控制状态寄存器中的中断允许位打开,以便在需要时,中断程序可以被调用执行。时,中断程序可以被调用执行。图图8.3 中断控制方式的传送结构中断控制方式的传送结构(2) 在进程发出指令启动设备之后,该进程放弃在进程发出指令
15、启动设备之后,该进程放弃处理机,等待输入完成。从而,进程调度程序调度其处理机,等待输入完成。从而,进程调度程序调度其他就绪进程占据处理机。他就绪进程占据处理机。(3) 当输入完成时,当输入完成时,I/O控制器通过中断请求线向控制器通过中断请求线向CPU发出中断信号。发出中断信号。CPU在接收到中断信号之后,在接收到中断信号之后,转向预先设计好的中断处理程序对数据传送工作进行转向预先设计好的中断处理程序对数据传送工作进行相应的处理。相应的处理。(4) 在以后的某个时刻,进程调度程序选中提出在以后的某个时刻,进程调度程序选中提出请求并得到了数据的进程,该进程从约定的内存特定请求并得到了数据的进程,
16、该进程从约定的内存特定单元中取出数据继续工作。单元中取出数据继续工作。中断控制方式的处理过程可由图中断控制方式的处理过程可由图8.4表示。表示。图图8.4 中断控制方式的处理过程中断控制方式的处理过程由图由图8.4可以看出,当可以看出,当CPU发出启动设备和允许发出启动设备和允许中断指令之后,它没有像程序直接控制方式那样循环中断指令之后,它没有像程序直接控制方式那样循环测试状态控制寄存器的状态是否已处于测试状态控制寄存器的状态是否已处于“Done”。反。反之,之,CPU已被调度程序分配给其他进程在另外的进已被调度程序分配给其他进程在另外的进程上下文中执行。当设备将数据送入缓冲寄存器并发程上下文
17、中执行。当设备将数据送入缓冲寄存器并发出中断信号之后,出中断信号之后,CPU接收中断信号进行中断处理。接收中断信号进行中断处理。显然,显然,CPU在另外的进程上下文中执行时,也可以在另外的进程上下文中执行时,也可以发启动不同设备的启动指令和允许中断指令,从而做发启动不同设备的启动指令和允许中断指令,从而做到设备与设备间的并行操作以及设备和到设备与设备间的并行操作以及设备和CPU间的并间的并行操作。行操作。优点优点:中断方式中断方式CPU的利用率大大提高且能支持的利用率大大提高且能支持多道程序和设备的并行操作多道程序和设备的并行操作缺点缺点:由于在由于在I/O控制器的数据缓冲寄存器装满数控制器的
18、数据缓冲寄存器装满数据之后将会发生中断,而且数据缓冲寄存通常较小,据之后将会发生中断,而且数据缓冲寄存通常较小,因此,在一次数据传送过程中,发生中断次数较多。因此,在一次数据传送过程中,发生中断次数较多。这将耗去大量的这将耗去大量的CPU处理时间。处理时间。现代计算机系统通常配置有各种各样的外围设备。现代计算机系统通常配置有各种各样的外围设备。如果这些设备通过中断处理方式进行并行操作,则由如果这些设备通过中断处理方式进行并行操作,则由于中断次数的急剧增加而造成于中断次数的急剧增加而造成CPU无法响应中断和无法响应中断和出现数据丢失现象。出现数据丢失现象。8.2.3 DMA方式方式又称直接存取方
19、式。基本思想是在外围设备和内又称直接存取方式。基本思想是在外围设备和内存之间开辟直接的数据交换通路。在存之间开辟直接的数据交换通路。在DMA方式中,方式中,I/O控制器具有比中断方式和程序直接控制方式时更控制器具有比中断方式和程序直接控制方式时更强的功能。除了控制状态寄存器和数据缓冲寄存器之强的功能。除了控制状态寄存器和数据缓冲寄存器之外,外,DMA控制器中还包括传送字节计数器、内存地控制器中还包括传送字节计数器、内存地址寄存器等。这是因为址寄存器等。这是因为DMA方式窃取或挪用方式窃取或挪用CPU的的一个工作周期把数据缓冲寄存器中的数据直接送到内一个工作周期把数据缓冲寄存器中的数据直接送到内
20、存地址寄存器所指向的内存区域。存地址寄存器所指向的内存区域。从而,从而,DMA控制器可用来代替控制器可用来代替CPU控制内存和控制内存和设备之间进行成批的数据交换。批量数据设备之间进行成批的数据交换。批量数据(数据块数据块)的的传送由计数器逐个计数,并由内存地址寄存器确定内传送由计数器逐个计数,并由内存地址寄存器确定内存地址。除了在数据块传送开始时需要存地址。除了在数据块传送开始时需要CPU的启动的启动指令和在整个数据块传送结束时需发中断通知指令和在整个数据块传送结束时需发中断通知CPU进行中断处理之外,不再像中断控制方式时那样需要进行中断处理之外,不再像中断控制方式时那样需要CPU的频繁干涉
21、。的频繁干涉。DMA存取方式的结构如图存取方式的结构如图8.5所示。所示。DMA方式的数据输入处理过程如下方式的数据输入处理过程如下: (1) 当进程要求设备输入数据时,当进程要求设备输入数据时,CPU把准备存把准备存放输入数据的内存始址以及要传送的字节数分别送入放输入数据的内存始址以及要传送的字节数分别送入DMA控制器中的内存地址寄存器和传送字节计数器控制器中的内存地址寄存器和传送字节计数器; 另外,还把控制状态寄存器中的中断允许位和启动位另外,还把控制状态寄存器中的中断允许位和启动位置置1; 从而启动设备开始进行数据输入。从而启动设备开始进行数据输入。图图8.5 DMA方式的传送结构方式的
22、传送结构(2) 发出数据要求的进程进入等待状态,进程调发出数据要求的进程进入等待状态,进程调度程序调度其他进程占据度程序调度其他进程占据CPU。(3) 输入设备不断地挪用输入设备不断地挪用CPU工作周期,将数据工作周期,将数据缓冲寄存器中的数据源源不断地写入内存,直到所要缓冲寄存器中的数据源源不断地写入内存,直到所要求的字节全部传送完毕。求的字节全部传送完毕。(4) DMA控制器在传送字节数完成时通过中断请控制器在传送字节数完成时通过中断请求线发出中断信号,求线发出中断信号,CPU在接收到中断信号后转中在接收到中断信号后转中断处理程序进行善后处理。断处理程序进行善后处理。 (5) 中断处理结束
23、时,中断处理结束时,CPU返回被中断进程处执返回被中断进程处执行或被调度到新的进程上下文环境中执行。行或被调度到新的进程上下文环境中执行。DMA方式的处理过程如图方式的处理过程如图8.6所示。所示。图图8.6 DMA方式的数据传送处理过程方式的数据传送处理过程由图由图8.6可以看出,可以看出,DMA方式与中断方式的一个方式与中断方式的一个主要区别是,中断方式时是在数据缓冲寄存器满之后主要区别是,中断方式时是在数据缓冲寄存器满之后发中断要求发中断要求CPU进行中断处理,而进行中断处理,而DMA方式则是在方式则是在所要求转送的数据块全部传送结束时要求所要求转送的数据块全部传送结束时要求CPU进行进
24、行中断处理。这就大大减少了中断处理。这就大大减少了CPU进行中断处理的次进行中断处理的次数。另一个主要区别是,中断方式的数据传送是在中数。另一个主要区别是,中断方式的数据传送是在中断处理时由断处理时由CPU控制完成的,而控制完成的,而DMA方式是在方式是在DMA控制器的控制下不经过控制器的控制下不经过CPU控制完成的。这就排除控制完成的。这就排除了因并行操作设备过多时了因并行操作设备过多时CPU来不及处理或因速度来不及处理或因速度不匹配而造成数据丢失等现象。不匹配而造成数据丢失等现象。DMA方式仍存在着一定的局限性。方式仍存在着一定的局限性。首先,首先,DMA方式对外围设备的管理和某些操作方式
25、对外围设备的管理和某些操作仍由仍由CPU控制。在大中型计算机中,系统所配置的控制。在大中型计算机中,系统所配置的外设种类越来越多,数量也越来越大,因而,对外围外设种类越来越多,数量也越来越大,因而,对外围设备的管理的控制也就愈来愈复杂。多个设备的管理的控制也就愈来愈复杂。多个DMA控制控制器的同时使用显然会引起内存地址的冲突并使得控制器的同时使用显然会引起内存地址的冲突并使得控制过程进一步复杂化。过程进一步复杂化。同时同时,多个多个DMA控制器的同时使用也是不经济的。控制器的同时使用也是不经济的。8.2.4 通道控制方式通道控制方式与与DMA方式不同的是,在方式不同的是,在DMA方式中,数据的
26、方式中,数据的传送方向、存放数据的内存始址以及传送的数据块长传送方向、存放数据的内存始址以及传送的数据块长度等都由度等都由CPU控制通道方式中,这些都由专管输入控制通道方式中,这些都由专管输入输出的硬件输出的硬件通道来进行控制。通道来进行控制。另外,与另外,与DMA方式时每台设备至少一个方式时每台设备至少一个DMA控控制器相比,通道控制方式可以做到一个通道控制多台制器相比,通道控制方式可以做到一个通道控制多台设备与内存进行数据交换设备与内存进行数据交换通道是一个独立于通道是一个独立于CPU的专管输入输出控制的的专管输入输出控制的处理机,它控制设备与内存直接进行数据交换。它有处理机,它控制设备与
27、内存直接进行数据交换。它有自己的通道指令,这些通道指令受自己的通道指令,这些通道指令受CPU启动,并在启动,并在操作结束时向操作结束时向CPU发中断信号。发中断信号。通道的定义给出了通道控制方式的基本思想。在通道的定义给出了通道控制方式的基本思想。在通道控制方式中,通道控制方式中,I/O控制器中没有传送字节计数器控制器中没有传送字节计数器和内存地址寄存器;但多了通道设备控制器和指令执和内存地址寄存器;但多了通道设备控制器和指令执行机构。在通道方式下,行机构。在通道方式下,CPU只需发出启动指令,只需发出启动指令,指出通道相应的操作和指出通道相应的操作和I/O设备,该指令就可启动通设备,该指令就
28、可启动通道并使该通道从内存中调出相应的通道指令执行。道并使该通道从内存中调出相应的通道指令执行。通道指令一般包含有被交换数据在内存中应占据通道指令一般包含有被交换数据在内存中应占据的位置、传送方向、数据块长度以及被控制的的位置、传送方向、数据块长度以及被控制的I/O设设备的地址信息、特征信息备的地址信息、特征信息(等,通道指令在通道中没等,通道指令在通道中没有存储部件时存放在内存中。有存储部件时存放在内存中。通道指令的格式一般由操作码、读、写或控制、通道指令的格式一般由操作码、读、写或控制、计数段计数段(数据块长度数据块长度)以及内存地址段和结束标志等组以及内存地址段和结束标志等组成。通道指令
29、在进程要求数据时由系统自动生成。例成。通道指令在进程要求数据时由系统自动生成。例如如:write 0 0 250 1850 write 1 1 250 720另外,一个通道可以以分时方式同时执行几个通另外,一个通道可以以分时方式同时执行几个通道指令程序。按照信息交换方式不同,一个系统中可道指令程序。按照信息交换方式不同,一个系统中可设立三种类型的通道,即字节多路通道、数组多路通设立三种类型的通道,即字节多路通道、数组多路通道和选择通道。由这三种通道组成的数据传送控制结道和选择通道。由这三种通道组成的数据传送控制结构如图构如图8.7所示。所示。字节多路通道以字节为单位传送数据,它主要用字节多路通
30、道以字节为单位传送数据,它主要用来连接大量的低速设备,如终端、打印机等。来连接大量的低速设备,如终端、打印机等。数组多路通道以块为单位传送数据,它具有传送数组多路通道以块为单位传送数据,它具有传送速率高和能分时操作不同的设备等优点。数组多路通速率高和能分时操作不同的设备等优点。数组多路通道主要用来连接中速块设备,如磁带机等。道主要用来连接中速块设备,如磁带机等。图图8.7 通道方式的数据传送结构通道方式的数据传送结构数组多路通道和字节多路通道都可以分时执行不数组多路通道和字节多路通道都可以分时执行不同的通道指令程序。但是,选择通道一次只能执行一同的通道指令程序。但是,选择通道一次只能执行一个通
31、道指令程序。所以,选择通道一次只能控制一台个通道指令程序。所以,选择通道一次只能控制一台设备进行设备进行 I/O操作。不过,选择通道具有传送速度高操作。不过,选择通道具有传送速度高的特点,因而它被用来连接高速外部设备,并以块为的特点,因而它被用来连接高速外部设备,并以块为单位成批传送数据。受选择通道控制的外设有磁盘机单位成批传送数据。受选择通道控制的外设有磁盘机等。等。通道控制方式的数据输入处理过程可描述如下通道控制方式的数据输入处理过程可描述如下: (1) 当进程要求设备输入数据时,当进程要求设备输入数据时,CPU发发Start指令指令指明指明I/O操作、设备号和对应通道。操作、设备号和对应
32、通道。(2) 对应通道接收到对应通道接收到CPU发来的启动指令发来的启动指令Start之之后,把存放在内存中的通道指令程序读出,设置对应后,把存放在内存中的通道指令程序读出,设置对应设备的设备的I/O控制器中的控制状态寄存器。控制器中的控制状态寄存器。(3) 设备根据通道指令的要求,把数据送往内存设备根据通道指令的要求,把数据送往内存中指定区域。中指定区域。(4) 若数据传送结束,若数据传送结束,I/O控制器通过中断请求线控制器通过中断请求线发中断信号请求发中断信号请求CPU做中断处理。做中断处理。第第5步与步与DMA方式时相同,即中断处理结束后方式时相同,即中断处理结束后CPU返回被中断进程
33、处继续执行。返回被中断进程处继续执行。在在(1)中要求数据的进程只有在调度程序选中它中要求数据的进程只有在调度程序选中它之后,才能对所得到的数据进行加工处理。之后,才能对所得到的数据进行加工处理。另外,在许多情况下,人们可从另外,在许多情况下,人们可从CPU执行的角执行的角度描述中断控制方式、度描述中断控制方式、DMA方式或通道控制方式的方式或通道控制方式的控制处理过程。作为一个例子,这里给出通道控制方控制处理过程。作为一个例子,这里给出通道控制方式的描述过程。式的描述过程。Channel control procedure:repeatIRMpcpc pc+1execute(IR)if re
34、quire accessing with I/O Devicethen Command(I/O operation,Address of I/O device,channel) fiif I/O Done Interruptthen Call Interrupt processing control fiuntil machine haltInterrupt processing control procedure其中,其中,IR代表指令寄存器,代表指令寄存器,pc代表程序计数器,而代表程序计数器,而fi则表示则表示if.then.条件语句的结束。关于条件语句的结束。关于interrupt p
35、rocessing control部分,在下面的章节中将进一步讨论。部分,在下面的章节中将进一步讨论。8.3 中中 断断 技技 术术从上节可以看出,除了程序直接控制方式之外,从上节可以看出,除了程序直接控制方式之外,无论是中断控制方式、无论是中断控制方式、DMA方式还是通道控制方式,方式还是通道控制方式,都需在设备和都需在设备和CPU之间进行通信,由设备向之间进行通信,由设备向CPU发发中断信号之后,中断信号之后,CPU接收相应的中断信号进行处理。接收相应的中断信号进行处理。这几种方式的区别只是中断处理的次数、数据传送方这几种方式的区别只是中断处理的次数、数据传送方式以及控制指令的执行方式等。
36、在计算机系统中,除式以及控制指令的执行方式等。在计算机系统中,除了上述了上述I/O中断之外,还存在着许多其他的突发事件,中断之外,还存在着许多其他的突发事件,例如电源掉电、程序出错等,这些也会发出中断信号例如电源掉电、程序出错等,这些也会发出中断信号通知通知CPU做相应的处理。做相应的处理。8.3.1 中断的基本概念中断的基本概念中断中断(Interrupt)是指计算机在执行期间,系统内是指计算机在执行期间,系统内发生任何非寻常的或非预期的急需处理事件,使得发生任何非寻常的或非预期的急需处理事件,使得CPU暂时中断当前正在执行的程序而转去执行相应暂时中断当前正在执行的程序而转去执行相应的事件处
37、理程序,待处理完毕后又返回原来被中断处的事件处理程序,待处理完毕后又返回原来被中断处继续执行或调度新的进程执行的过程。继续执行或调度新的进程执行的过程。引起中断发生引起中断发生的事件被称为中断源。的事件被称为中断源。中断源向中断源向CPU发出的请求中发出的请求中断处理信号称为中断请求,而断处理信号称为中断请求,而CPU收到中断请求后收到中断请求后转相应的事件处理程序称为中断响应。转相应的事件处理程序称为中断响应。中断屏蔽是通过每一类中断源设置一个中断屏蔽中断屏蔽是通过每一类中断源设置一个中断屏蔽触发器来屏蔽它们的中断请求而实现的。不过,有些触发器来屏蔽它们的中断请求而实现的。不过,有些中断请求
38、是不能屏蔽甚至不能禁止的,也就是说,这中断请求是不能屏蔽甚至不能禁止的,也就是说,这些中断具有最高优先级。不管些中断具有最高优先级。不管CPU是否是关中断的,是否是关中断的,只要这些中断请求一旦提出,只要这些中断请求一旦提出,CPU必须立即响应。必须立即响应。例如,电源掉电事件所引起的中断就是不可禁止和屏例如,电源掉电事件所引起的中断就是不可禁止和屏蔽中断。蔽中断。*8.3.2 中断的分类与优先级中断的分类与优先级根据系统对中断处理的需要,操作系统一般对中根据系统对中断处理的需要,操作系统一般对中断进行分类并对不同的中断赋予不同的处理优先级,断进行分类并对不同的中断赋予不同的处理优先级,以便在
39、不同的中断同时发生时,按轻重缓急进行处理。以便在不同的中断同时发生时,按轻重缓急进行处理。根据中断源产生的条件,可把中断分为外中断和根据中断源产生的条件,可把中断分为外中断和内中断。内中断。外中断时指来自处理机和内存外部的中断,包括外中断时指来自处理机和内存外部的中断,包括I/O设备发出的设备发出的I/O中断、外部信号中断中断、外部信号中断(例如用户键例如用户键入入ESC键键)、各种定时器引起的时钟中断以及调试程、各种定时器引起的时钟中断以及调试程序中设置的断点等引起的调试中断等。外中断在狭义序中设置的断点等引起的调试中断等。外中断在狭义上一般被称为中断。上一般被称为中断。内中断主要指在处理机
40、和内存内部产生的中断。内中断主要指在处理机和内存内部产生的中断。内中断一般称为陷阱内中断一般称为陷阱(trap)。它包括程序运算引起的。它包括程序运算引起的各种错误,如地址非法、校验错、页面失效、存取访各种错误,如地址非法、校验错、页面失效、存取访问控制错、算术操作溢出、数据格式非法、除数为零、问控制错、算术操作溢出、数据格式非法、除数为零、非法指令、用户程序执行特权指令、分时系统中的时非法指令、用户程序执行特权指令、分时系统中的时间片中断以及从用户态到核心态的切换等都是陷阱的间片中断以及从用户态到核心态的切换等都是陷阱的例子。例子。为了按中断源的轻重缓急处理响应中断,操作系为了按中断源的轻重
41、缓急处理响应中断,操作系统对不同的中断赋予不同的优先级。为了禁止中断或统对不同的中断赋予不同的优先级。为了禁止中断或屏蔽中断,屏蔽中断,CPU的处理机状态字的处理机状态字PSW中也设置有相中也设置有相应的优先级。如果中断源的优先级高于应的优先级。如果中断源的优先级高于PSW的优先的优先级,则级,则CPU响应该中断源的中断请求,反之,响应该中断源的中断请求,反之,CPU屏蔽该中断源的中断请求。屏蔽该中断源的中断请求。中断和陷阱有如下主要区别中断和陷阱有如下主要区别: (1) 陷阱通常由处理机正在执行的现行指令引起,陷阱通常由处理机正在执行的现行指令引起,而中断则是由与现行指令无关的中断源引起的。
42、而中断则是由与现行指令无关的中断源引起的。(2) 陷阱处理程序提供的服务为当前进程所用,陷阱处理程序提供的服务为当前进程所用,而中断处理程序提供的服务则不是为了当前进程的。而中断处理程序提供的服务则不是为了当前进程的。(3) CPU在执行完一条指令之后,下一条指令开在执行完一条指令之后,下一条指令开始之前响应中断,而在一条指令执行中也可以响应陷始之前响应中断,而在一条指令执行中也可以响应陷阱。阱。8.3.3 软中断软中断上述中断和陷阱都可以看作是硬中断,因为这些上述中断和陷阱都可以看作是硬中断,因为这些中断和陷阱要通过硬件产生相应的中断请求。中断和陷阱要通过硬件产生相应的中断请求。软中断是通信
43、进程之间用来模拟硬中断的一种信软中断是通信进程之间用来模拟硬中断的一种信号通信方式。号通信方式。软中断的概念主要来源于软中断的概念主要来源于UNIX系统。系统。在有些系统中,大部分的陷阱是转化为软中断处在有些系统中,大部分的陷阱是转化为软中断处理的。理的。8.3.4 中断处理过程中断处理过程中断处理过程中断处理过程: (1) 首先,首先,CPU检查响应中断的条件是否满足。检查响应中断的条件是否满足。CPU响应中断的条件是响应中断的条件是: 有来自于中断源的中断请求、有来自于中断源的中断请求、CPU允许中断。允许中断。(2) 如果如果CPU响应中断,则响应中断,则CPU关中断,使其进关中断,使其
44、进入不可再次响应中断的状态。入不可再次响应中断的状态。(3) 保存被中断进程现场。为了在中断处理结束保存被中断进程现场。为了在中断处理结束后能使进程正确地返回到中断点,系统必须保存当前后能使进程正确地返回到中断点,系统必须保存当前处理机状态字处理机状态字PSW和程序计数器和程序计数器PC等的值。这些值等的值。这些值一般保存在特定堆栈或硬件寄存器中。一般保存在特定堆栈或硬件寄存器中。(4) 分析中断原因,调用中断处理子程序。在多分析中断原因,调用中断处理子程序。在多个中断请求同时发生时,处理优先级最高的。个中断请求同时发生时,处理优先级最高的。(5) 执行中断处理子程序。执行中断处理子程序。(6
45、) 退出中断,恢复被中断进程的现场或调度新退出中断,恢复被中断进程的现场或调度新进程占据处理机。进程占据处理机。(7) 开中断,开中断,CPU继续执行。继续执行。图图8.8 中断处理过程中断处理过程I/O Interrupt processing control:beginunusable I/O Interrupt flagsave status of interrupt programif Input Device i Readythen Call Input Device i Control fiif Output Device i Readythen Call Output Devic
46、e i Control fiif Data Deliver Donethen Call Data Deliver Done Control firestore CPU statusreset I/O Interrupt flagendInput Device i Control:Output Device i Control: Data Deliver Done Control: 8.4 缓缓 冲冲 技技 术术8.4.1 缓冲的引入缓冲的引入外围设备和外围设备和CPU处理速度不匹配的问题极大地处理速度不匹配的问题极大地制约了计算机系统性能的进一步提高和限制了系统的制约了计算机系统性能的进一步提
47、高和限制了系统的应用范围。应用范围。例如,当计算进程阵发性地把大批量数据输出到例如,当计算进程阵发性地把大批量数据输出到打印机上打印时,由于打印机上打印时,由于CPU输出数据的速度大大高输出数据的速度大大高于打印机的打印速度,因此,于打印机的打印速度,因此,CPU只好停下来等待。只好停下来等待。反之,在计算进程进行计算时,打印机又因无数据输反之,在计算进程进行计算时,打印机又因无数据输出而空闲无事。出而空闲无事。外围设备与处理机速度不匹配的问题可以采用设外围设备与处理机速度不匹配的问题可以采用设置缓冲区置缓冲区(器器)的方法解决。的方法解决。再者,从减少中断的次数看,也存在着引入缓冲再者,从减
48、少中断的次数看,也存在着引入缓冲区的必要性。在中断方式时,如果在区的必要性。在中断方式时,如果在I/O控制器中增控制器中增加一个加一个100个字符缓冲器,则由前面各字对中断方式个字符缓冲器,则由前面各字对中断方式的描述可知,的描述可知,I/O控制器对处理机的中断次数将降低控制器对处理机的中断次数将降低100倍,即等到能存放倍,即等到能存放100个字符的字符缓冲区装满之个字符的字符缓冲区装满之后才向处理机发一次中断。后才向处理机发一次中断。因此,为了匹配外设与因此,为了匹配外设与CPU之间的处理速度,之间的处理速度,为了减少中断次数和为了减少中断次数和CPU的中断处理时间,同时也的中断处理时间,
49、同时也是为了解决是为了解决DMA或通道方式时的瓶颈问题,在设备或通道方式时的瓶颈问题,在设备管理中引入了用来暂存数据的缓冲技术。管理中引入了用来暂存数据的缓冲技术。根据根据I/O控制方式,缓冲的实现方法有两种,一控制方式,缓冲的实现方法有两种,一种是采用专用硬件缓冲器,例如种是采用专用硬件缓冲器,例如I/O控制器中的数据控制器中的数据缓冲寄存器。另一种方法是在内存缓冲寄存器。另一种方法是在内存划出一个具有出一个具有n个个单元的专用缓冲区,以便存放输入输出的数据。内存单元的专用缓冲区,以便存放输入输出的数据。内存缓冲区又称软件缓冲。缓冲区又称软件缓冲。8.4.2 缓冲的种类缓冲的种类根据系统设置
50、的缓冲器的个数,可把缓冲技术分根据系统设置的缓冲器的个数,可把缓冲技术分为单缓冲、双缓冲和多缓冲以及缓冲池几种。为单缓冲、双缓冲和多缓冲以及缓冲池几种。单缓冲 双缓冲双缓冲 双缓冲可在发送者和接收者之间设两个缓冲区双缓冲可在发送者和接收者之间设两个缓冲区BUF1和和BUF2。 图双缓冲 多缓冲是把多个缓冲区连接起来组成两部分,一多缓冲是把多个缓冲区连接起来组成两部分,一部分专门用于输入,另一部分专门用于输出的缓冲结部分专门用于输入,另一部分专门用于输出的缓冲结构。缓冲池则是把多个缓冲区连接起来统一管理,既构。缓冲池则是把多个缓冲区连接起来统一管理,既可用于输入又可用于输出的缓冲结构。可用于输入
51、又可用于输出的缓冲结构。*8.4.3 缓冲池的管理缓冲池的管理1. 缓冲池的结构缓冲池的结构缓冲池由多个缓冲区组成。而一个缓冲区由两部缓冲池由多个缓冲区组成。而一个缓冲区由两部分组成分组成: 一部分是用来标识该缓冲器和用于管理的缓一部分是用来标识该缓冲器和用于管理的缓冲首部,另一部分是用于存放数据的缓冲体。这两部冲首部,另一部分是用于存放数据的缓冲体。这两部分有一一对应的映射关系。对缓冲池的管理是通过对分有一一对应的映射关系。对缓冲池的管理是通过对每一个缓冲器的缓冲首部进行操作实现的。每一个缓冲器的缓冲首部进行操作实现的。缓冲首部如图缓冲首部如图8.9所示,它包括设备号、设备上所示,它包括设备
52、号、设备上的数据块号的数据块号(块设备时块设备时)、互斥标识位以及缓冲队列连、互斥标识位以及缓冲队列连接指针和缓冲器号等。接指针和缓冲器号等。系统把各缓冲区按其使用状况连成三种队列系统把各缓冲区按其使用状况连成三种队列:(1) 空白缓冲队列空白缓冲队列em,其队首指针为,其队首指针为F(em),队,队尾指针为尾指针为L(em);图图8.9 缓冲首部缓冲首部(2) 装满输入数据的输入缓冲队列装满输入数据的输入缓冲队列in,其队首指,其队首指针为针为F(in),队尾指针为,队尾指针为L(in);(3) 装满输出数据的输出缓冲队列装满输出数据的输出缓冲队列out,其队首指,其队首指针为针为F(out
53、),队尾指针为,队尾指针为L(out)。其队列构成如图其队列构成如图8.10所示。所示。图图8.10 缓冲区队列缓冲区队列除了三种缓冲队列之外,系统除了三种缓冲队列之外,系统(或用户进程或用户进程)从这从这三种队列中申请和取出缓冲区,并用得到的缓冲区进三种队列中申请和取出缓冲区,并用得到的缓冲区进行存数、取数操作,在存数、取数操作结束后,再将行存数、取数操作,在存数、取数操作结束后,再将缓冲区放入相应的队列。这些缓冲区被称为工作缓冲缓冲区放入相应的队列。这些缓冲区被称为工作缓冲区。在缓冲池中,有区。在缓冲池中,有4种工作缓冲区种工作缓冲区,即即:(1) 用于收容设备输入数据的收容输入缓冲区用于
54、收容设备输入数据的收容输入缓冲区hin;(2) 用于提取设备输入数据的提取输入缓冲区用于提取设备输入数据的提取输入缓冲区sin;(3) 用于收容用于收容CPU输出数据的收容输出缓冲区输出数据的收容输出缓冲区hout;(4) 用于提取用于提取CPU输出数据的提取输出缓冲区输出数据的提取输出缓冲区sout。缓冲池的工作缓冲区如图缓冲池的工作缓冲区如图8.11所示。所示。图5.19 缓冲池的工作过程 图图8.11 缓冲池的工作缓冲区缓冲池的工作缓冲区2. 缓冲池管理缓冲池管理对缓冲池的管理由如下几个操作组成对缓冲池的管理由如下几个操作组成: (1) 从三种缓冲区队列中按一定的选取规则取出从三种缓冲区
55、队列中按一定的选取规则取出一个缓冲区的过程一个缓冲区的过程take_buf(type);(2) 把缓冲区按一定的选取规则插入相应的缓冲把缓冲区按一定的选取规则插入相应的缓冲区队列的过程区队列的过程add_buf(type, number);(3) 供进程申请缓冲区用的过程供进程申请缓冲区用的过程get_buf(type,number);(4) 供进程将缓冲区放入相应缓冲区队列的过程供进程将缓冲区放入相应缓冲区队列的过程put_buf(type,work_buf)。其中,参数其中,参数type表示缓冲队列类型,表示缓冲队列类型,number为为缓冲区号,而缓冲区号,而work_buf则表示工作缓
56、冲区类型。则表示工作缓冲区类型。使用这几个操作,缓冲池的工作过程可描述如下使用这几个操作,缓冲池的工作过程可描述如下:首先,输入进程调用首先,输入进程调用get_buf(em,number)过程从过程从空白缓冲区队列中取出一个缓冲号为空白缓冲区队列中取出一个缓冲号为number的空白的空白缓冲区,将其作为收容输入缓冲区缓冲区,将其作为收容输入缓冲区hin,当,当hin中装满中装满了由输入设备输入的数据之后,系统调用过程了由输入设备输入的数据之后,系统调用过程put_buf(in,hin)将该缓冲区插入输入缓冲区队列将该缓冲区插入输入缓冲区队列in中。中。另外,当进程需要输出数据时,输出进程经过
57、缓另外,当进程需要输出数据时,输出进程经过缓冲管理程序调用过程冲管理程序调用过程get_buf(em,number)从空白缓冲从空白缓冲区队列中取出一个空白缓冲区区队列中取出一个空白缓冲区number作为收容输出作为收容输出缓冲区缓冲区hout,待,待hout中装满输出数据之后,系统再调中装满输出数据之后,系统再调用过程用过程put_buf(out,hout)将该缓冲区插入输出缓冲区将该缓冲区插入输出缓冲区队列队列out。对缓冲区的输入数据和输出数据的提取也是由过对缓冲区的输入数据和输出数据的提取也是由过程程get_buf和和put_buf实现的。实现的。get_buf(out,number)
58、从从输出缓冲队列中取出装满输出数据的缓冲区输出缓冲队列中取出装满输出数据的缓冲区number,将其作为将其作为sout。当。当sout中数据输出完毕时,系统调用中数据输出完毕时,系统调用过程过程put_buf(em,sout)将该缓冲区插入空白缓冲队列。将该缓冲区插入空白缓冲队列。而而get_buf(in,number)则从输入缓冲队列中取出一个则从输入缓冲队列中取出一个装满输入数据的缓冲区装满输入数据的缓冲区number作为输入缓冲区作为输入缓冲区sin,当当CPU从中提取完所需数据之后,系统调用过程从中提取完所需数据之后,系统调用过程put_buf(em,sin)将该缓冲区释放和插入空白缓
59、冲队列将该缓冲区释放和插入空白缓冲队列em中。中。显然,对于各缓冲队列中缓冲区的排列以及每次显然,对于各缓冲队列中缓冲区的排列以及每次取出和插入缓冲队列区的顺序都应有一定的规则。最取出和插入缓冲队列区的顺序都应有一定的规则。最简单的方法是简单的方法是FIFO,即先来先出的排列方法。采用,即先来先出的排列方法。采用FIFO方法,过程方法,过程put_buf每次把缓冲区插入相应缓冲每次把缓冲区插入相应缓冲队列的队尾,而过程队列的队尾,而过程get_buf则取出相应缓冲队列的则取出相应缓冲队列的第一个缓冲区,从而第一个缓冲区,从而get_buf中的第二个参数中的第二个参数number可以省略。而且,
60、采用可以省略。而且,采用FIFO方法也省略了对缓冲队方法也省略了对缓冲队列的搜索时间。列的搜索时间。过程过程add_buf(type,number)和和take_buf(type,number)分别用来把缓冲区分别用来把缓冲区number插插入入type队列和从队列和从type队列中取出缓冲区队列中取出缓冲区number。它。它们分别被过程们分别被过程get_buf和和put_buf调用,其中调用,其中, take_buf返回所取缓冲区返回所取缓冲区number的指针的指针, 而而add_buf则将给定则将给定缓冲区缓冲区number的指针链入队列。的指针链入队列。下面给出过程下面给出过程ge
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论