
《操作系统第8章》由会员分享,可在线阅读,更多相关《操作系统第8章(95页珍藏版)》请在文档大全上搜索。
1、设备管理设备管理8.1 引言引言8.2 数据传送控制方式数据传送控制方式8.3 中断技术中断技术8.4 缓冲技术缓冲技术8.5 设备分配设备分配8.6 I/O进程控制进程控制8.7 设备驱动程序设备驱动程序本章小结本章小结习题习题设备管理是操作系统的重要组成部分之一。本章主设备管理是操作系统的重要组成部分之一。本章主要讨论设备管理的基本概念,包括中断、缓冲、设要讨论设备管理的基本概念,包括中断、缓冲、设备分配和控制等。备分配和控制等。引引 言言1 设备的类别设备的类别在计算机系统中,除了在计算机系统中,除了CPU和内存之外,其他的大和内存之外,其他的大部分硬设备称为外部设备。它包括常用的输入输
2、出部分硬设备称为外部设备。它包括常用的输入输出设备、外存设备以及终端设备等。本节先从系统管设备、外存设备以及终端设备等。本节先从系统管理的角度将各种设备进行简单的分类,然后再介绍理的角度将各种设备进行简单的分类,然后再介绍设备管理的主要功能与任务。设备管理的主要功能与任务。早期的计算机系统由于速度慢、应用面窄,外部设早期的计算机系统由于速度慢、应用面窄,外部设备主要以纸带、卡片等作为输入输出介质,相应的备主要以纸带、卡片等作为输入输出介质,相应的设备管理程序也比较简单。设备管理程序也比较简单。由于个人计算机、工作站以及计算机网络系统等的由于个人计算机、工作站以及计算机网络系统等的发展,外部设备
3、开始走向多样化、复杂化和智能化。发展,外部设备开始走向多样化、复杂化和智能化。再者,除了硬件设备之外,以某种硬件设备为基础再者,除了硬件设备之外,以某种硬件设备为基础的虚拟设备和仿真设备技术也得到了广泛应用。例的虚拟设备和仿真设备技术也得到了广泛应用。例如,虚终端技术和仿真终端技术等。实际上,近年如,虚终端技术和仿真终端技术等。实际上,近年来最为流行的窗口系统中的来最为流行的窗口系统中的X-WINDOW等都是作等都是作为一种设备和操作系统相连的。这使得设备管理变为一种设备和操作系统相连的。这使得设备管理变得越来越复杂化。得越来越复杂化。首先,我们介绍设备的分类。按设备的使用特性分,首先,我们介
4、绍设备的分类。按设备的使用特性分,可分为存储设备、输入输出设备、终端设备以及脱可分为存储设备、输入输出设备、终端设备以及脱机设备等,如图机设备等,如图8.1所示。所示。图图 按使用特性对外部设备的分类按使用特性对外部设备的分类另外,按设备的从属关系,可把设备画分为系统设另外,按设备的从属关系,可把设备画分为系统设备和用户设备。系统设备是指那些在操作系统生成备和用户设备。系统设备是指那些在操作系统生成时就已配置好的各种标准设备。例如,键盘、打印时就已配置好的各种标准设备。例如,键盘、打印机以及文件存储设备等。而用户设备则是那些在系机以及文件存储设备等。而用户设备则是那些在系统生成时没有配置,而由
5、用户自己安装配置后由操统生成时没有配置,而由用户自己安装配置后由操作系统统一管理的设备。例如,网络系统中的各种作系统统一管理的设备。例如,网络系统中的各种网板、实时系统中的网板、实时系统中的A/D、D/A变换器、图像处理变换器、图像处理系统的图像设备等。系统的图像设备等。对设备分类的目的在于简化设备管理程序。由于设对设备分类的目的在于简化设备管理程序。由于设备管理程序是和硬件打交道的,因此,不同的设备备管理程序是和硬件打交道的,因此,不同的设备硬件对应于不同的管理程序。不过,对于同类设备硬件对应于不同的管理程序。不过,对于同类设备来说,由于设备的硬件特性十分相似,从而可以利来说,由于设备的硬件
6、特性十分相似,从而可以利用相同的管理程序或只需做很少的修改即可。用相同的管理程序或只需做很少的修改即可。除了上述分类方法之外,在有的系统中还按信息组除了上述分类方法之外,在有的系统中还按信息组织方式来画分设备。例如,织方式来画分设备。例如,UNIX系统就把外部设系统就把外部设备画分为字符设备和块设备。键盘、终端、打印机备画分为字符设备和块设备。键盘、终端、打印机等以字符为单位组织和处理信息的设备被称为字符等以字符为单位组织和处理信息的设备被称为字符设备;而磁盘、磁带等以字符块为单位组织和处理设备;而磁盘、磁带等以字符块为单位组织和处理信息的设备被称为块设备。信息的设备被称为块设备。2 设备管理
7、的功能和任务设备管理的功能和任务设备管理是对计算机输入输出系统的管理,是操作设备管理是对计算机输入输出系统的管理,是操作系统中最具多样性和复杂性的部分。其主要任务是:系统中最具多样性和复杂性的部分。其主要任务是:(1) 选择和分配输入输出设备以进行数据传输操作;选择和分配输入输出设备以进行数据传输操作;(2) 控制输入输出设备和控制输入输出设备和CPU(或内存)之间交换数(或内存)之间交换数据;据;(3) 为用户提供友好的透明接口,把用户和设备硬件为用户提供友好的透明接口,把用户和设备硬件特性分开,使得用户在编制应用程序时不必涉及具特性分开,使得用户在编制应用程序时不必涉及具体设备,系统按用户
8、要求控制设备工作。另外,这体设备,系统按用户要求控制设备工作。另外,这个接口还为新增加的用户设备提供一个和系统核心个接口还为新增加的用户设备提供一个和系统核心相连接的入口,以便用户开发新的设备管理程序;相连接的入口,以便用户开发新的设备管理程序;(4) 提高设备和设备之间、提高设备和设备之间、CPU和设备之间,以及进和设备之间,以及进程和进程之间的并行操作度,以使操作系统获得最程和进程之间的并行操作度,以使操作系统获得最佳效率。佳效率。为了完成上述主要任务,设备管理程序一般要提供为了完成上述主要任务,设备管理程序一般要提供下述功能:下述功能:(1) 提供和进程管理系统的接口。当进程要求设备资提
9、供和进程管理系统的接口。当进程要求设备资源时,该接口将进程要求转达给设备管理程序;源时,该接口将进程要求转达给设备管理程序;(2) 进行设备分配。按照设备类型和相应的分配算法进行设备分配。按照设备类型和相应的分配算法把设备和其他有关的硬件分配给请求该设备的进程,把设备和其他有关的硬件分配给请求该设备的进程,并把未分配到所请求设备或其他有关硬件的进程放并把未分配到所请求设备或其他有关硬件的进程放入等待队列;入等待队列;(3) 实现设备和设备、设备和实现设备和设备、设备和CPU等之间的并行操作。等之间的并行操作。这需要有相应的硬件支持。除了装有控制状态寄存这需要有相应的硬件支持。除了装有控制状态寄
10、存器、数据缓冲寄存器等的控制器之外,对应于不同器、数据缓冲寄存器等的控制器之外,对应于不同的输入输出的输入输出(I/O)控制方式,还需要有控制方式,还需要有DMA通道等通道等硬件。从而,在设备分配程序根据进程要求分配了硬件。从而,在设备分配程序根据进程要求分配了设备、控制器和通道(或设备、控制器和通道(或DMA)等硬件之后,通)等硬件之后,通道(或道(或DMA)将自动完成设备和内存之间的数据)将自动完成设备和内存之间的数据传送工作,从而完成并行操作的任务。在没有通道传送工作,从而完成并行操作的任务。在没有通道(或(或DMA)的系统里,则由设备管理程序利用中)的系统里,则由设备管理程序利用中断技
11、术来完成上述并行操作;断技术来完成上述并行操作;(4) 进行缓冲区管理。一般来说,进行缓冲区管理。一般来说,CPU的执行速度和的执行速度和访问内存速度都比较高,而外部设备的数据流通速访问内存速度都比较高,而外部设备的数据流通速度则低得多(例如键盘),为了减少外部设备和内度则低得多(例如键盘),为了减少外部设备和内存与存与CPU之间的数据速度不匹配的问题,系统中一之间的数据速度不匹配的问题,系统中一般设有缓冲区(器)来暂放数据。设备管理程序负般设有缓冲区(器)来暂放数据。设备管理程序负责进行缓冲区分配、释放及有关的管理工作。责进行缓冲区分配、释放及有关的管理工作。下面,首先介绍各种输入输出的控制
12、方式,然后再下面,首先介绍各种输入输出的控制方式,然后再介绍缓冲区管理、中断、陷入以及软中断等基本概介绍缓冲区管理、中断、陷入以及软中断等基本概念。在此基础上,再介绍设备分配原则及有关分配念。在此基础上,再介绍设备分配原则及有关分配算法,最后介绍算法,最后介绍I/O进程的概念及设备驱动过程。进程的概念及设备驱动过程。数据传送控制方式数据传送控制方式设备管理的主要任务之一是控制设备和内存或设备管理的主要任务之一是控制设备和内存或CPU之间的数据传送,本节介绍常用数据传送控制方式。之间的数据传送,本节介绍常用数据传送控制方式。选择和衡量控制方式有如下几条原则:选择和衡量控制方式有如下几条原则:(1
13、) 数据传送速度足够高,能满足用户的需要但又不数据传送速度足够高,能满足用户的需要但又不丢失数据;丢失数据;(2) 系统开销小,所需的处理控制程序少;系统开销小,所需的处理控制程序少;(3) 能充分发挥硬件资源的能力,使得能充分发挥硬件资源的能力,使得I/O设备尽量忙,设备尽量忙,而而CPU等待时间少。为了控制等待时间少。为了控制I/O设备和内存之间设备和内存之间的数据交换,每台外围设备都按一定规律编码。而的数据交换,每台外围设备都按一定规律编码。而且,设备和内存与且,设备和内存与CPU之间有相应的硬件接口支持之间有相应的硬件接口支持同步控制、设备选择以及中断控制等。因此,假定同步控制、设备选
14、择以及中断控制等。因此,假定本节的数据传送控制方式都是基于这些硬件基础的,本节的数据传送控制方式都是基于这些硬件基础的,从而不再讨论有关硬件部分。从而不再讨论有关硬件部分。外围设备和内存之间的常用数据传送控制方式有外围设备和内存之间的常用数据传送控制方式有4种。种。即:即:(1) 程序直接控制方式;程序直接控制方式;(2) 中断控制方式;中断控制方式;(3) DMA方式;方式;(4) 通道方式。通道方式。下面分别给予介绍。下面分别给予介绍。1 程序直接控制方式程序直接控制方式就是由用户进程来直接控制内存或就是由用户进程来直接控制内存或CPU和外围设备和外围设备之间的信息传送。这种方式的控制者是
15、用户进程。之间的信息传送。这种方式的控制者是用户进程。当用户进程需要数据时,它通过当用户进程需要数据时,它通过CPU发出启动设备发出启动设备准备数据的启动命令准备数据的启动命令“Start”,然后,用户进程进,然后,用户进程进入测试等待状态。在等待时间内,入测试等待状态。在等待时间内,CPU不断地用一不断地用一条测试指令检查描述外围设备的工作状态的控制状条测试指令检查描述外围设备的工作状态的控制状态寄存器。而外围设备只有将数据传送的准备工作态寄存器。而外围设备只有将数据传送的准备工作作好之后,才将该寄存器置为完成状态。从而,当作好之后,才将该寄存器置为完成状态。从而,当CPU检测到控制状态寄存
16、器为完成状态,也就是该检测到控制状态寄存器为完成状态,也就是该寄存器发出寄存器发出“Done”信号之后,设备开始往内存或信号之后,设备开始往内存或CPU传送数据。反之,当用户进程需要向设备输出传送数据。反之,当用户进程需要向设备输出数据时,也必须同样发启动命令启动设备和等待设数据时,也必须同样发启动命令启动设备和等待设备准备好之后才能输出数据。备准备好之后才能输出数据。除了控制状态寄存器之外,在除了控制状态寄存器之外,在I/O控制器中还有一类控制器中还有一类称为数据缓冲寄存器的寄存器。在称为数据缓冲寄存器的寄存器。在CPU与外围设备与外围设备之间传送数据时,输入设备每进行一次操作,首先之间传送
17、数据时,输入设备每进行一次操作,首先把所输入的数据送入该寄存器,然后,把所输入的数据送入该寄存器,然后,CPU再把其再把其中数据取走。反之,当中数据取走。反之,当CPU输出数据时,也是先把输出数据时,也是先把数据输出到该寄存器之后,再由输出设备将其取走。数据输出到该寄存器之后,再由输出设备将其取走。只有数据装入该寄存器之后,控制状态寄存器的值只有数据装入该寄存器之后,控制状态寄存器的值才会发生变化。才会发生变化。图图 程序直接控制方式程序直接控制方式程序直接控制方式虽然控制简单,也不需要多少硬程序直接控制方式虽然控制简单,也不需要多少硬件支持,但是,明显地存在下述缺点:件支持,但是,明显地存在
18、下述缺点:(1) CPU和外围设备只能串行工作。由于和外围设备只能串行工作。由于CPU的处理的处理速度要大大高于外围设备的数据传送和处理速度,速度要大大高于外围设备的数据传送和处理速度,所以,所以,CPU的大量时间都处于等待和空闲状态。这的大量时间都处于等待和空闲状态。这使得使得CPU的利用率大大降低;的利用率大大降低;(2) CPU在一段时间内只能和一台外围设备交换数据在一段时间内只能和一台外围设备交换数据信息,从而不能实现设备之间的并行工作;信息,从而不能实现设备之间的并行工作;(3) 由于程序直接控制方式依靠测试设备标志触发器由于程序直接控制方式依靠测试设备标志触发器的状态位来控制数据传
19、送,因此无法发现和处理由的状态位来控制数据传送,因此无法发现和处理由于设备或其他硬件所产生的错误。所认,程序直接于设备或其他硬件所产生的错误。所认,程序直接控制方式只适用于那些控制方式只适用于那些CPU执行速度较慢,而且外执行速度较慢,而且外围设备较少的系统。围设备较少的系统。2 中断方式中断方式为了减少程序直接控制方式中为了减少程序直接控制方式中CPU等待时间以及提等待时间以及提高系统的并行工作程度,中断高系统的并行工作程度,中断(interrupt)方式被用方式被用来控制外围设备和内存与来控制外围设备和内存与CPU之间的数据传送。这之间的数据传送。这种方式要求种方式要求CPU与设备与设备(
20、或控制器或控制器)之间有相应的中之间有相应的中断请求线,而且在设备控制器的控制状态寄存器的断请求线,而且在设备控制器的控制状态寄存器的相应的中断允许位。中断方式的传送结构如图所示。相应的中断允许位。中断方式的传送结构如图所示。从而,数据的输入可按如下步骤操作。从而,数据的输入可按如下步骤操作。(1) 首先,进程需要数据时,通过首先,进程需要数据时,通过CPU发出发出“Start”指令启动外围设备准备数据。该指令同时还将控制指令启动外围设备准备数据。该指令同时还将控制状态寄存器中的中断允许位打开,以便在需要时,状态寄存器中的中断允许位打开,以便在需要时,中断程序可以被调用执行。中断程序可以被调用
21、执行。图图 中断控制方式的传送结构中断控制方式的传送结构(2) 在进程发出指令启动设备之后,该进程放弃处理在进程发出指令启动设备之后,该进程放弃处理机,等待输入完成。从而,进程调度程序调度其他机,等待输入完成。从而,进程调度程序调度其他就绪进程占据处理机。就绪进程占据处理机。(3) 当输入完成时,当输入完成时,I/O控制器通过中断请求线向控制器通过中断请求线向CPU发出中断信号。发出中断信号。CPU在接收到中断信号之后,转向在接收到中断信号之后,转向预先设计好的中断处理程序对数据传送工作进行相预先设计好的中断处理程序对数据传送工作进行相应的处理。应的处理。(4) 在以后的某个时刻,进程调度程序
22、选中提出请求在以后的某个时刻,进程调度程序选中提出请求并得到了数据的进程,该进程从约定的内存特定单并得到了数据的进程,该进程从约定的内存特定单元中取出数据继续工作。元中取出数据继续工作。中断控制方式的处理过程可由下图表示。中断控制方式的处理过程可由下图表示。中断控制方式的处理过程中断控制方式的处理过程由图可以看出,当由图可以看出,当CPU发出启动设备和允许中断指发出启动设备和允许中断指令之后,它没有像程序直接控制方式那样循环测试令之后,它没有像程序直接控制方式那样循环测试状态控制寄存器的状态是否已处于状态控制寄存器的状态是否已处于“Done”。反之,。反之,CPU已被调度程序分配给其他进程在另
23、外的进程上已被调度程序分配给其他进程在另外的进程上下文中执行。当设备将数据送入缓冲寄存器并发出下文中执行。当设备将数据送入缓冲寄存器并发出中断信号之后,中断信号之后,CPU接收中断信号进行中断处理。接收中断信号进行中断处理。显然,显然,CPU在另外的进程上下文中执行时,也可以在另外的进程上下文中执行时,也可以发启动不同设备的启动指令和允许中断指令,从而发启动不同设备的启动指令和允许中断指令,从而做到设备与设备间的并行操作以及设备和做到设备与设备间的并行操作以及设备和CPU间的间的并行操作。并行操作。尽管中断方式尽管中断方式CPU的利用率大大提高且能支持多道的利用率大大提高且能支持多道程序和设备
24、的并行操作,但仍然存在着许多问题。程序和设备的并行操作,但仍然存在着许多问题。首先,由于在首先,由于在I/O控制器的数据缓冲寄存器装满数控制器的数据缓冲寄存器装满数据之后将会发生中断,而且数据缓冲寄存通常较小,据之后将会发生中断,而且数据缓冲寄存通常较小,因此,在一次数据传送过程中,发生中断次数较多。因此,在一次数据传送过程中,发生中断次数较多。这将耗去大量的这将耗去大量的CPU处理时间。另外,现代计算机处理时间。另外,现代计算机系统通常配置有各种各样的外围设备。如果这些设系统通常配置有各种各样的外围设备。如果这些设备通过中断处理方式进行并行操作,则由于中断次备通过中断处理方式进行并行操作,则
25、由于中断次数的急剧增加而造成数的急剧增加而造成CPU无法响应中断和出现数据无法响应中断和出现数据丢失现象。另外,在中断控制方式时,我们都是假丢失现象。另外,在中断控制方式时,我们都是假定外围设备的速度非常低,而定外围设备的速度非常低,而CPU处理速度非常高。处理速度非常高。如果外围设备的速度也非常高,则可能造成数据缓如果外围设备的速度也非常高,则可能造成数据缓冲寄存器的数据由于冲寄存器的数据由于CPU来不及取走而丢失。来不及取走而丢失。DMA方式和通道方式不会造成上述问题。方式和通道方式不会造成上述问题。3 DMA方式方式又称直接存取方式。基本思想是在外围设备和内存又称直接存取方式。基本思想是
26、在外围设备和内存之间开辟直接的数据交换通路。在之间开辟直接的数据交换通路。在DMA方式中,方式中,I/O控制器具有比中断方式和程序直接控制方式时控制器具有比中断方式和程序直接控制方式时更强的功能。除了控制状态寄存器和数据缓冲寄存更强的功能。除了控制状态寄存器和数据缓冲寄存器之外,器之外,DMA控制器中还包括传送字节计数器、控制器中还包括传送字节计数器、内存地址寄存器等。这是因为内存地址寄存器等。这是因为DMA方式窃取或挪方式窃取或挪用用CPU的一个工作周期把数据缓冲寄存器中的数据的一个工作周期把数据缓冲寄存器中的数据直接送到内存地址寄存器所指向的内存区域。直接送到内存地址寄存器所指向的内存区域
27、。从而,从而,DMA控制器可用来代替控制器可用来代替CPU控制内存和设备控制内存和设备之间进行成批的数据交换。批量数据之间进行成批的数据交换。批量数据(数据块数据块)的传的传送由计数器逐个计数,并由内存地址寄存器确定内送由计数器逐个计数,并由内存地址寄存器确定内存地址。除了在数据块传送开始时需要存地址。除了在数据块传送开始时需要CPU的启动的启动指令和在整个数据块传送结束时需发中断通知指令和在整个数据块传送结束时需发中断通知CPU进行中断处理之外,不再像中断控制方式时那样需进行中断处理之外,不再像中断控制方式时那样需要要CPU的频繁干涉。的频繁干涉。DMA存取方式的结构如图存取方式的结构如图8
28、.5所示。所示。DMA方式的数据输入处理过程如下方式的数据输入处理过程如下: (1) 当进程要求设备输入数据时,当进程要求设备输入数据时,CPU把准备存放输把准备存放输入数据的内存始址以及要传送的字节数分别送入入数据的内存始址以及要传送的字节数分别送入DMA控制器中的内存地址寄存器和传送字节计数控制器中的内存地址寄存器和传送字节计数器器; 另外,还把控制状态寄存器中的中断允许位和另外,还把控制状态寄存器中的中断允许位和启动位置启动位置1; 从而启动设备开始进行数据输入。从而启动设备开始进行数据输入。DMA方式的传送结构方式的传送结构(2) 发出数据要求的进程进入等待状态,进程调度程发出数据要求
29、的进程进入等待状态,进程调度程序调度其他进程占据序调度其他进程占据CPU。(3) 输入设备不断地挪用输入设备不断地挪用CPU工作周期,将数据缓冲工作周期,将数据缓冲寄存器中的数据源源不断地写入内存,直到所要求寄存器中的数据源源不断地写入内存,直到所要求的字节全部传送完毕。的字节全部传送完毕。(4) DMA控制器在传送字节数完成时通过中断请求线控制器在传送字节数完成时通过中断请求线发出中断信号,发出中断信号,CPU在接收到中断信号后转中断处在接收到中断信号后转中断处理程序进行善后处理。理程序进行善后处理。 (5) 中断处理结束时,中断处理结束时,CPU返回被中断进程处执行或返回被中断进程处执行或
30、被调度到新的进程上下文环境中执行。被调度到新的进程上下文环境中执行。DMA方式的处理过程如图所示。方式的处理过程如图所示。图图 DMA方式的数据传送处理过程方式的数据传送处理过程由图可以看出,由图可以看出,DMA方式与中断方式的一个主要区方式与中断方式的一个主要区别是,中断方式时是在数据缓冲寄存器满之后发中别是,中断方式时是在数据缓冲寄存器满之后发中断要求断要求CPU进行中断处理,而进行中断处理,而DMA方式则是在所方式则是在所要求转送的数据块全部传送结束时要求要求转送的数据块全部传送结束时要求CPU进行中进行中断处理。这就大大减少了断处理。这就大大减少了CPU进行中断处理的次数。进行中断处理
31、的次数。另一个主要区别是,中断方式的数据传送是在中断另一个主要区别是,中断方式的数据传送是在中断处理时由处理时由CPU控制完成的,而控制完成的,而DMA方式是在方式是在DMA控制器的控制下不经过控制器的控制下不经过CPU控制完成的。这就排除控制完成的。这就排除了因并行操作设备过多时了因并行操作设备过多时CPU来不及处理或因速度来不及处理或因速度不匹配而造成数据丢失等现象。不匹配而造成数据丢失等现象。不过,不过,DMA方式仍存在着一定的局限性。首先,方式仍存在着一定的局限性。首先,DMA方式对外围设备的管理和某些操作仍由方式对外围设备的管理和某些操作仍由CPU控制。在大中型计算机中,系统所配置的
32、外设种类控制。在大中型计算机中,系统所配置的外设种类越来越多,数量也越来越大,因而,对外围设备的越来越多,数量也越来越大,因而,对外围设备的管理的控制也就愈来愈复杂。多个管理的控制也就愈来愈复杂。多个DMA控制器的控制器的同时使用显然会引起内存地址的冲突并使得控制过同时使用显然会引起内存地址的冲突并使得控制过程进一步复杂化。同时程进一步复杂化。同时,多个多个DMA控制器的同时使控制器的同时使用也是不经济的。因此,在大中型计算机系统中用也是不经济的。因此,在大中型计算机系统中(近年来甚至在那些要求近年来甚至在那些要求I/O能力强的微机系统中能力强的微机系统中),除了设置除了设置DMA器件之外,还
33、设置专门的硬件装器件之外,还设置专门的硬件装置置通道。下面介绍通道控制方式。通道。下面介绍通道控制方式。4 通道控制方式通道控制方式通道控制通道控制(channel control)方式与方式与DMA方式相类似,方式相类似,也是一种以内存为中心,实现设备和内存直接交换也是一种以内存为中心,实现设备和内存直接交换数据的控制方式。与数据的控制方式。与DMA方式不同的是,在方式不同的是,在DMA方式中,数据的传送方向、存放数据的内存始址以方式中,数据的传送方向、存放数据的内存始址以及传送的数据块长度等都由及传送的数据块长度等都由CPU控制,而在通道方控制,而在通道方式中,这些都由专管输入输出的硬件式
34、中,这些都由专管输入输出的硬件通道来进通道来进行控制。另外,与行控制。另外,与DMA方式时每台设备至少一个方式时每台设备至少一个DMA控制器相比,通道控制方式可以做到一个通控制器相比,通道控制方式可以做到一个通道控制多台设备与内存进行数据交换,从而,通道道控制多台设备与内存进行数据交换,从而,通道方式进一步减轻了方式进一步减轻了CPU的工作负担和增加了计算机的工作负担和增加了计算机系统的并行工作程度。系统的并行工作程度。由于通道是一个专管输入输出操作控制的硬件,有由于通道是一个专管输入输出操作控制的硬件,有必要更进一步完整地描述一下通道的定义:通道是必要更进一步完整地描述一下通道的定义:通道是
35、一个独立于一个独立于CPU的专管输入输出控制的处理机,它的专管输入输出控制的处理机,它控制设备与内存直接进行数据交换。它有自己的通控制设备与内存直接进行数据交换。它有自己的通道指令,这些通道指令受道指令,这些通道指令受CPU启动,并在操作结束启动,并在操作结束时向时向CPU发中断信号。发中断信号。通道的定义给出了通道控制方式的基本思想。在通通道的定义给出了通道控制方式的基本思想。在通道控制方式中,道控制方式中,I/O控制器中没有传送字节计数器控制器中没有传送字节计数器和内存地址寄存器;但多了通道设备控制器和指令和内存地址寄存器;但多了通道设备控制器和指令执行机构。在通道方式下,执行机构。在通道
36、方式下,CPU只需发出启动指令,只需发出启动指令,指出通道相应的操作和指出通道相应的操作和I/O设备,该指令就可启动设备,该指令就可启动通道并使该通道从内存中调出相应的通道指令执行。通道并使该通道从内存中调出相应的通道指令执行。通道指令一般包含有被交换数据在内存中应占据的通道指令一般包含有被交换数据在内存中应占据的位置、传送方向、数据块长度以及被控制的位置、传送方向、数据块长度以及被控制的I/O设设备的地址信息、特征信息备的地址信息、特征信息(等,通道指令在通道中等,通道指令在通道中没有存储部件时存放在内存中。没有存储部件时存放在内存中。通道指令的格式一般由操作码、读、写或控制、计通道指令的格
37、式一般由操作码、读、写或控制、计数段数段(数据块长度数据块长度)以及内存地址段和结束标志等组以及内存地址段和结束标志等组成。通道指令在进程要求数据时由系统自动生成。成。通道指令在进程要求数据时由系统自动生成。例如例如:write 0 0 250 1850 write 1 1 250 720是两条把一个记录的是两条把一个记录的500个字符分别写入从内存地址个字符分别写入从内存地址1850开始的开始的250个单元和从内存地址个单元和从内存地址720开始的开始的250个单元中。其中假定个单元中。其中假定write操作码后的操作码后的“1”是通道是通道指令结束标志,而另一个指令结束标志,而另一个“1”
38、则是记录结束标志。则是记录结束标志。该指令中省略了设备号和设备特征。该指令中省略了设备号和设备特征。另外,一个通道可以以分时方式同时执行几个通道另外,一个通道可以以分时方式同时执行几个通道指令程序。按照信息交换方式不同,一个系统中可指令程序。按照信息交换方式不同,一个系统中可设立三种类型的通道,即字节多路通道、数组多路设立三种类型的通道,即字节多路通道、数组多路通道和选择通道。由这三种通道组成的数据传送控通道和选择通道。由这三种通道组成的数据传送控制结构如图所示。制结构如图所示。字节多路通道以字节为单位传送数据,它主要用来字节多路通道以字节为单位传送数据,它主要用来连接大量的低速设备,如终端、
39、打印机等。连接大量的低速设备,如终端、打印机等。数组多路通道以块为单位传送数据,它具有传送速数组多路通道以块为单位传送数据,它具有传送速率高和能分时操作不同的设备等优点。数组多路通率高和能分时操作不同的设备等优点。数组多路通道主要用来连接中速块设备,如磁带机等。道主要用来连接中速块设备,如磁带机等。图图 通道方式的数据传送结构通道方式的数据传送结构数组多路通道和字节多路通道都可以分时执行不同数组多路通道和字节多路通道都可以分时执行不同的通道指令程序。但是,选择通道一次只能执行一的通道指令程序。但是,选择通道一次只能执行一个通道指令程序。所以,选择通道一次只能控制一个通道指令程序。所以,选择通道
40、一次只能控制一台设备进行台设备进行 I/O操作。不过,选择通道具有传送速操作。不过,选择通道具有传送速度高的特点,因而它被用来连接高速外部设备,并度高的特点,因而它被用来连接高速外部设备,并以块为单位成批传送数据。受选择通道控制的外设以块为单位成批传送数据。受选择通道控制的外设有磁盘机等。有磁盘机等。通道控制方式的数据输入处理过程可描述如下通道控制方式的数据输入处理过程可描述如下: (1) 当进程要求设备输入数据时,当进程要求设备输入数据时,CPU发发Start指令指指令指明明I/O操作、设备号和对应通道。操作、设备号和对应通道。(2) 对应通道接收到对应通道接收到CPU发来的启动指令发来的启
41、动指令Start之后,之后,把存放在内存中的通道指令程序读出,设置对应设把存放在内存中的通道指令程序读出,设置对应设备的备的I/O控制器中的控制状态寄存器。控制器中的控制状态寄存器。(3) 设备根据通道指令的要求,把数据送往内存中指设备根据通道指令的要求,把数据送往内存中指定区域。定区域。(4) 若数据传送结束,若数据传送结束,I/O控制器通过中断请求线发中控制器通过中断请求线发中断信号请求断信号请求CPU做中断处理。做中断处理。第第5步与步与DMA方式时相同,即中断处理结束后方式时相同,即中断处理结束后CPU返返回被中断进程处继续执行。回被中断进程处继续执行。在在(1)中要求数据的进程只有在
42、调度程序选中它之后,中要求数据的进程只有在调度程序选中它之后,才能对所得到的数据进行加工处理。才能对所得到的数据进行加工处理。另外,在许多情况下,人们可从另外,在许多情况下,人们可从CPU执行的角度描执行的角度描述中断控制方式、述中断控制方式、DMA方式或通道控制方式的控方式或通道控制方式的控制处理过程。作为一个例子,这里给出通道控制方制处理过程。作为一个例子,这里给出通道控制方式的描述过程。式的描述过程。Channel control procedure:repeatIRMpcpc pc+1execute(IR)if require accessing with I/O Devicethen
43、 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 processing control部分,在下面的章节中将进一步讨部分,
44、在下面的章节中将进一步讨论。论。中中 断断 技技 术术从上节可以看出,除了程序直接控制方式之外,无从上节可以看出,除了程序直接控制方式之外,无论是中断控制方式、论是中断控制方式、DMA方式还是通道控制方式,方式还是通道控制方式,都需在设备和都需在设备和CPU之间进行通信,由设备向之间进行通信,由设备向CPU发发中断信号之后,中断信号之后,CPU接收相应的中断信号进行处理。接收相应的中断信号进行处理。这几种方式的区别只是中断处理的次数、数据传送这几种方式的区别只是中断处理的次数、数据传送方式以及控制指令的执行方式等。在计算机系统中,方式以及控制指令的执行方式等。在计算机系统中,除了上述除了上述I
45、/O中断之外,还存在着许多其他的突发中断之外,还存在着许多其他的突发事件,例如电源掉电、程序出错等,这些也会发出事件,例如电源掉电、程序出错等,这些也会发出中断信号通知中断信号通知CPU做相应的处理。本节进一步讨论做相应的处理。本节进一步讨论中断问题。中断问题。1 中断的基本概念中断的基本概念中断中断(Interrupt)是指计算机在执行期间,系统内发生是指计算机在执行期间,系统内发生任何非寻常的或非预期的急需处理事件,使得任何非寻常的或非预期的急需处理事件,使得CPU暂时中断当前正在执行的程序而转去执行相应的事暂时中断当前正在执行的程序而转去执行相应的事件处理程序,待处理完毕后又返回原来被中
46、断处继件处理程序,待处理完毕后又返回原来被中断处继续执行或调度新的进程执行的过程。引起中断发生续执行或调度新的进程执行的过程。引起中断发生的事件被称为中断源。中断源向的事件被称为中断源。中断源向CPU发出的请求中发出的请求中断处理信号称为中断请求,而断处理信号称为中断请求,而CPU收到中断请求后收到中断请求后转相应的事件处理程序称为中断响应。转相应的事件处理程序称为中断响应。在有些情况下,尽管产生了中断源和发出了中断请在有些情况下,尽管产生了中断源和发出了中断请求,但求,但CPU内部的处理机状态字内部的处理机状态字PSW的中断允许的中断允许位已被清除,从而不允许位已被清除,从而不允许CPU响应
47、中断。这种情况响应中断。这种情况称为禁止中断。称为禁止中断。CPU禁止中断后只有等到禁止中断后只有等到PSW的的中断允许位被重新设置后才能接收中断。禁止中断中断允许位被重新设置后才能接收中断。禁止中断也称为关中断,也称为关中断,PSW的中断允许位的设置也被称的中断允许位的设置也被称为开中断。中断请求、关中断、开中断等都由硬件为开中断。中断请求、关中断、开中断等都由硬件实现。实现。开中断和关中断是为了保证某些程序执行的原子性。开中断和关中断是为了保证某些程序执行的原子性。除了禁止中断的概念之外,还有一个比较常用的概除了禁止中断的概念之外,还有一个比较常用的概念是中断屏蔽。中断屏蔽是指在中断请求产
48、生之后,念是中断屏蔽。中断屏蔽是指在中断请求产生之后,系统用软件方式有选择地封锁部分中断而允许其余系统用软件方式有选择地封锁部分中断而允许其余部分的中断仍能得到响应。部分的中断仍能得到响应。中断屏蔽是通过每一类中断源设置一个中断屏蔽触中断屏蔽是通过每一类中断源设置一个中断屏蔽触发器来屏蔽它们的中断请求而实现的。不过,有些发器来屏蔽它们的中断请求而实现的。不过,有些中断请求是不能屏蔽甚至不能禁止的,也就是说,中断请求是不能屏蔽甚至不能禁止的,也就是说,这些中断具有最高优先级。不管这些中断具有最高优先级。不管CPU是否是关中断是否是关中断的,只要这些中断请求一旦提出,的,只要这些中断请求一旦提出,
49、CPU必须立即响必须立即响应。例如,电源掉电事件所引起的中断就是不可禁应。例如,电源掉电事件所引起的中断就是不可禁止和屏蔽中断。止和屏蔽中断。2 中断的分类与优先级中断的分类与优先级根据系统对中断处理的需要,操作系统一般对中断根据系统对中断处理的需要,操作系统一般对中断进行分类并对不同的中断赋予不同的处理优先级,进行分类并对不同的中断赋予不同的处理优先级,以便在不同的中断同时发生时,按轻重缓急进行处以便在不同的中断同时发生时,按轻重缓急进行处理。理。根据中断源产生的条件,可把中断分为外中断和内根据中断源产生的条件,可把中断分为外中断和内中断。中断。外中断时指来自处理机和内存外部的中断,包括外中
50、断时指来自处理机和内存外部的中断,包括I/O设备发出的设备发出的I/O中断、外部信号中断中断、外部信号中断(例如用户键入例如用户键入ESC键键)、各种定时器引起的时钟中断以及调试程、各种定时器引起的时钟中断以及调试程序中设置的断点等引起的调试中断等。外中断在狭序中设置的断点等引起的调试中断等。外中断在狭义上一般被称为中断。义上一般被称为中断。内中断主要指在处理机和内存内部产生的中断。内内中断主要指在处理机和内存内部产生的中断。内中断一般称为陷阱中断一般称为陷阱(trap)。它包括程序运算引起的。它包括程序运算引起的各种错误,如地址非法、校验错、页面失效、存取各种错误,如地址非法、校验错、页面失
51、效、存取访问控制错、算术操作溢出、数据格式非法、除数访问控制错、算术操作溢出、数据格式非法、除数为零、非法指令、用户程序执行特权指令、分时系为零、非法指令、用户程序执行特权指令、分时系统中的时间片中断以及从用户态到核心态的切换等统中的时间片中断以及从用户态到核心态的切换等都是陷阱的例子。都是陷阱的例子。为了按中断源的轻重缓急处理响应中断,操作系统为了按中断源的轻重缓急处理响应中断,操作系统对不同的中断赋予不同的优先级。为了禁止中断或对不同的中断赋予不同的优先级。为了禁止中断或屏蔽中断,屏蔽中断,CPU的处理机状态字的处理机状态字PSW中也设置有中也设置有相应的优先级。如果中断源的优先级高于相应
52、的优先级。如果中断源的优先级高于PSW的的优先级,则优先级,则CPU响应该中断源的中断请求,反之,响应该中断源的中断请求,反之,CPU屏蔽该中断源的中断请求。屏蔽该中断源的中断请求。各中断源的优先级在系统设计时给定,在系统运行各中断源的优先级在系统设计时给定,在系统运行时是固定的。而处理机的优先级则根据执行情况由时是固定的。而处理机的优先级则根据执行情况由系统程序动态设定。中断和陷阱还有如下主要区别系统程序动态设定。中断和陷阱还有如下主要区别: (1) 陷阱通常由处理机正在执行的现行指令引起,而陷阱通常由处理机正在执行的现行指令引起,而中断则是由与现行指令无关的中断源引起的。中断则是由与现行指
53、令无关的中断源引起的。(2) 陷阱处理程序提供的服务为当前进程所用,而中陷阱处理程序提供的服务为当前进程所用,而中断处理程序提供的服务则不是为了当前进程的。断处理程序提供的服务则不是为了当前进程的。(3) CPU在执行完一条指令之后,下一条指令开始之在执行完一条指令之后,下一条指令开始之前响应中断,而在一条指令执行中也可以响应陷阱。前响应中断,而在一条指令执行中也可以响应陷阱。例如执行指令非法时,尽管被执行的非法指令不能例如执行指令非法时,尽管被执行的非法指令不能执行结束,但执行结束,但CPU仍可对其进行处理。仍可对其进行处理。另外,在有的系统中,陷阱处理程序被规定在各自另外,在有的系统中,陷
54、阱处理程序被规定在各自的进程上下文中执行,而中断处理程序则在系统上的进程上下文中执行,而中断处理程序则在系统上下文中执行。下文中执行。3 软中断软中断 上述中断和陷阱都可以看作是硬中断,因为这些中上述中断和陷阱都可以看作是硬中断,因为这些中断和陷阱要通过硬件产生相应的中断请求。而软中断和陷阱要通过硬件产生相应的中断请求。而软中断则不然,它是通信进程之间用来模拟硬中断的一断则不然,它是通信进程之间用来模拟硬中断的一种信号通信方式。软中断与硬中断相同的地方是:种信号通信方式。软中断与硬中断相同的地方是:其中断源发中断请求或软中断信号后,其中断源发中断请求或软中断信号后,CPU或接收或接收进程在适当
55、的时机自动进行中断处理或完成软中断进程在适当的时机自动进行中断处理或完成软中断信号所对应的功能。这里用信号所对应的功能。这里用“适当的时机适当的时机”几个字几个字是表示接收软中断信号的进程不一定正好在接收时是表示接收软中断信号的进程不一定正好在接收时占有处理机,而相应的处理必须等到该接收进程得占有处理机,而相应的处理必须等到该接收进程得到处理机之后才能进行。如果该接收进程是占据处到处理机之后才能进行。如果该接收进程是占据处理机的,那么,与中断处理相同,该接收进程在接理机的,那么,与中断处理相同,该接收进程在接收到软中断信号后将立即转去执行该软中断信号所收到软中断信号后将立即转去执行该软中断信号
56、所对应的功能。对应的功能。软中断的概念主要来源于软中断的概念主要来源于UNIX系统。在前面介绍进系统。在前面介绍进程通信的有关章节中,已对程通信的有关章节中,已对UNIX的软中断通信进的软中断通信进行了介绍,这里不再重复。行了介绍,这里不再重复。需要说明的一点是,在有些系统中,大部分的陷阱需要说明的一点是,在有些系统中,大部分的陷阱是转化为软中断处理的。由于陷阱主要与当前执行是转化为软中断处理的。由于陷阱主要与当前执行进程有关,因此,如果当前执行指令产生陷阱的话,进程有关,因此,如果当前执行指令产生陷阱的话,则向当前执行进程自身发出一个软中断信号从而立则向当前执行进程自身发出一个软中断信号从而
57、立即进入陷阱处理程序。即进入陷阱处理程序。4 中断处理过程中断处理过程一旦一旦CPU响应中断,转入中断处理程序,系统就开响应中断,转入中断处理程序,系统就开始进行中断处理。下面说明中断处理过程始进行中断处理。下面说明中断处理过程: (1) 首先,首先,CPU检查响应中断的条件是否满足。检查响应中断的条件是否满足。CPU响应中断的条件是响应中断的条件是: 有来自于中断源的中断请求、有来自于中断源的中断请求、CPU允许中断。允许中断。(2) 如果如果CPU响应中断,则响应中断,则CPU关中断,使其进入不关中断,使其进入不可再次响应中断的状态。可再次响应中断的状态。(3) 保存被中断进程现场。为了在
58、中断处理结束后能保存被中断进程现场。为了在中断处理结束后能使进程正确地返回到中断点,系统必须保存当前处使进程正确地返回到中断点,系统必须保存当前处理机状态字理机状态字PSW和程序计数器和程序计数器PC等的值。这些值等的值。这些值一般保存在特定堆栈或硬件寄存器中。在多个中断一般保存在特定堆栈或硬件寄存器中。在多个中断请求同时发生时,处理优先级最高的。请求同时发生时,处理优先级最高的。在系统中,为了处理上的方便,通常都是针对不同在系统中,为了处理上的方便,通常都是针对不同的中断源编制有不同的中断处理子程序的中断源编制有不同的中断处理子程序(陷阱处理陷阱处理子程序子程序)。这些子程序的入口地址。这些
59、子程序的入口地址(或陷阱指令的入或陷阱指令的入口地址口地址)存放在内存的特定单元中。再者,不同的存放在内存的特定单元中。再者,不同的中断源也对应着不同的处理机状态字中断源也对应着不同的处理机状态字PSW。这些。这些不同的不同的PSW被放在相应的内存单元中。存放的被放在相应的内存单元中。存放的PSW与中断处理子程序入口地址一起构成中断向与中断处理子程序入口地址一起构成中断向量。显然,根据中断或陷阱的种类,系统可由中断量。显然,根据中断或陷阱的种类,系统可由中断向量表迅速地找到该中断响应的优先级、中断处理向量表迅速地找到该中断响应的优先级、中断处理子程序子程序(或陷阱指令或陷阱指令)的入口地址和对
60、应的的入口地址和对应的PSW。(5) 执行中断处理子程序。对陷阱来说,在有些系统执行中断处理子程序。对陷阱来说,在有些系统中则是通过陷阱指令向当前执行进程发软中断信号中则是通过陷阱指令向当前执行进程发软中断信号后调用对应的处理子程序执行。后调用对应的处理子程序执行。 (6) 退出中断,恢复被中断进程的现场或调度新进程退出中断,恢复被中断进程的现场或调度新进程占据处理机。占据处理机。(7) 开中断,开中断,CPU继续执行。继续执行。中断处理过程如图中断处理过程如图8.8所示。所示。有些系统中只在保存和恢复现场时禁止中断,而在有些系统中只在保存和恢复现场时禁止中断,而在执行中断处理子程序时屏蔽中断
61、。执行中断处理子程序时屏蔽中断。上面描述了中断处理过程的各个步骤。下面从上面描述了中断处理过程的各个步骤。下面从CPU处理的角度出发来形式化地描述一下处理的角度出发来形式化地描述一下I/O中断处理中断处理的控制过程,以期读者能对中断处理过程有一个更的控制过程,以期读者能对中断处理过程有一个更深的了解。深的了解。中断处理过程中断处理过程I/O Interrupt processing control:beginunusable I/O Interrupt flagsave status of interrupt programif Input Device i Readythen Call In
62、put Device i Control fiif Output Device i Readythen Call Output Device 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: 缓缓 冲冲 技技 术术1 缓冲的引入缓冲的引入虽然中断、虽然中断、DMA和通道
63、控制技术使得系统中设备和和通道控制技术使得系统中设备和设备、设备和设备、设备和CPU等得以并行工作,但是外围设备等得以并行工作,但是外围设备和和CPU的处理速度不匹配的问题是客观存在的。这的处理速度不匹配的问题是客观存在的。这限制了和处理机连接的外设台数,且在中断方式时限制了和处理机连接的外设台数,且在中断方式时造成数据丢失。从而,外围设备和造成数据丢失。从而,外围设备和CPU处理速度不处理速度不匹配的问题极大地制约了计算机系统性能的进一步匹配的问题极大地制约了计算机系统性能的进一步提高和限制了系统的应用范围。提高和限制了系统的应用范围。例如,当计算进程阵发性地把大批量数据输出到打例如,当计算
64、进程阵发性地把大批量数据输出到打印机上打印时,由于印机上打印时,由于CPU输出数据的速度大大高于输出数据的速度大大高于打印机的打印速度,因此,打印机的打印速度,因此,CPU只好停下来等待。只好停下来等待。反之,在计算进程进行计算时,打印机又因无数据反之,在计算进程进行计算时,打印机又因无数据输出而空闲无事。输出而空闲无事。外围设备与处理机速度不匹配的问题可以采用设置外围设备与处理机速度不匹配的问题可以采用设置缓冲区缓冲区(器器)的方法解决。的方法解决。再者,从减少中断的次数看,也存在着引入缓冲区再者,从减少中断的次数看,也存在着引入缓冲区的必要性。在中断方式时,如果在的必要性。在中断方式时,如
65、果在I/O控制器中增控制器中增加一个加一个100个字符缓冲器,则由前面各字对中断方个字符缓冲器,则由前面各字对中断方式的描述可知,式的描述可知,I/O控制器对处理机的中断次数将控制器对处理机的中断次数将降低降低100倍,即等到能存放倍,即等到能存放100个字符的字符缓冲区个字符的字符缓冲区装满之后才向处理机发一次中断。这将大大减少处装满之后才向处理机发一次中断。这将大大减少处理机的中断处理时间。即使是使用理机的中断处理时间。即使是使用DMA方式或通方式或通道方式控制数据传送时,如果不画分专用的内存区道方式控制数据传送时,如果不画分专用的内存区或专用缓冲器来存放数据的话,也会因为要求数据或专用缓
66、冲器来存放数据的话,也会因为要求数据的进程所拥有的内存区不够或存放数据的内存始址的进程所拥有的内存区不够或存放数据的内存始址计算困难等原因而造成某个进程长期占有通道或计算困难等原因而造成某个进程长期占有通道或DMA控制器及设备,从而产生所谓瓶颈问题。控制器及设备,从而产生所谓瓶颈问题。因此,为了匹配外设与因此,为了匹配外设与CPU之间的处理速度,为了之间的处理速度,为了减少中断次数和减少中断次数和CPU的中断处理时间,同时也是为的中断处理时间,同时也是为了解决了解决DMA或通道方式时的瓶颈问题,在设备管或通道方式时的瓶颈问题,在设备管理中引入了用来暂存数据的缓冲技术。理中引入了用来暂存数据的缓冲技术。根据根据I/O控制方式,缓冲的实现方法有两种,一种是控制方式,缓冲的实现方法有两种,一种是采用专用硬件缓冲器,例如采用专用硬件缓冲器,例如I/O控制器中的数据缓控制器中的数据缓冲寄存器。另一种方法是在内存画出一个具有冲寄存器。另一种方法是在内存画出一个具有n个个单元的专用缓冲区,以便存放输入输出的数据。内单元的专用缓冲区,以便存放输入输出的数据。内存缓冲区又称软件缓冲。存缓冲区又称软件缓冲