《《操作系统原理与UNIX》课程教学课件 第八章 设备管理(95P)》由会员分享,可在线阅读,更多相关《《操作系统原理与UNIX》课程教学课件 第八章 设备管理(95P)(95页珍藏版)》请在金锄头文库上搜索。
1、操作系统原理与操作系统原理与UNIXUNIX2007第八章第八章 设备管理设备管理8.1 引言8.2 数据传送控制方式8.3 中断技术8.4 缓冲技术8.5 设备分配8.6 I/O进程控制8.7 设备驱动程序 8.1 引言引言计算机外部设备计算机外部设备 在在计计算算机机系系统统中中除除CPUCPU和和内内存存储储外外所所有有的的设设备备和和装装置置称称为为计计算算机机外外部部设设备备(外外围围设设备备、I/OI/O设备)。设备)。早早期期设设备备:速速度度慢慢,应应用用面面窄窄,如如纸纸带带、卡卡片片等。等。现现代代设设备备:种种类类繁繁多多、特特性性各各异异、操操作作复复杂杂。如:硬盘、打
2、印机、扫描仪、数码相机等。如:硬盘、打印机、扫描仪、数码相机等。8.1.1 设备的类别设备的类别按交互对象分类:按交互对象分类:人机交互设备人机交互设备:视频显示设备、键盘、:视频显示设备、键盘、鼠标、打印机鼠标、打印机与计算机或其他与计算机或其他电子设备交互电子设备交互的设备:的设备:磁盘、磁带、传感器、控制器磁盘、磁带、传感器、控制器计算机间的计算机间的通信设备通信设备:网卡、调制解调:网卡、调制解调器器8.1.1 设备的类别(续)设备的类别(续)按使用特性分类:按使用特性分类:存储设备存储设备输入输出设备输入输出设备终端设备终端设备脱机设备脱机设备按使用特性分类按使用特性分类外部设备存储
3、设备输入/输出设备终端设备脱机设备磁带磁盘其它(磁鼓、光盘等)软盘硬盘键盘打印机显示器图形输入/输出设备图像输入/输出设备声音输入/输出设备绘图机网络通信板其它通用终端专用终端虚终端会话型批处理型智能终端8.1.1 设备的类别(续)设备的类别(续)按从属关系分类:系统设备和用户设备按从属关系分类:系统设备和用户设备系统设备系统设备:在操作系统生成时就已配置:在操作系统生成时就已配置好的设备,如键盘、打印机及磁盘等好的设备,如键盘、打印机及磁盘等用户设备用户设备:由用户自己安装配置后由操:由用户自己安装配置后由操作系统统一管理的设备,如网络板、调作系统统一管理的设备,如网络板、调制解调器、图像设
4、备等。制解调器、图像设备等。8.1.1 设备的类别(续)设备的类别(续)按信息交换的单位分类:块设备(Block DeviceBlock Device):指以数据块为单位来组织和传指以数据块为单位来组织和传送数据信息的设备。这类设备用于存储信息,有磁盘和磁送数据信息的设备。这类设备用于存储信息,有磁盘和磁带等。它属于有结构设备。典型的块设备是磁盘,每个盘带等。它属于有结构设备。典型的块设备是磁盘,每个盘块的大小为块的大小为512B512B4KB4KB,磁盘设备的基本特征是:,磁盘设备的基本特征是:传传输速率较高,通常每秒钟为几兆位;输速率较高,通常每秒钟为几兆位;它是可寻址的,即它是可寻址的,
5、即可随机地读可随机地读/ /写任意一块;写任意一块;磁盘设备的磁盘设备的I/OI/O采用采用DMADMA方方式。式。字符设备(Character DeviceCharacter Device):):指以单个字符为单位来指以单个字符为单位来传送数据信息的设备。这类设备一般用于数据的输入和输传送数据信息的设备。这类设备一般用于数据的输入和输出,有交互式终端、打印机等。它属于无结构设备。字符出,有交互式终端、打印机等。它属于无结构设备。字符设备的基本特征是:设备的基本特征是:传输速率较低;传输速率较低;不可寻址,即不不可寻址,即不能指定输入时的源地址或输出时的目标地址;能指定输入时的源地址或输出时的
6、目标地址;字符设备字符设备的的I IO O常采用中断驱动方式。常采用中断驱动方式。8.1.2 设备管理的功能和任务设备管理的功能和任务设备管理的任务:设备管理的任务:(1)选择和分配输入输出设备以便进行数据传输操作;)选择和分配输入输出设备以便进行数据传输操作;(2)控制输入输出设备和)控制输入输出设备和CPU(或内存)之间交换数(或内存)之间交换数据;据;(3)为用户提供一个友好的透明接口,把用户和设备)为用户提供一个友好的透明接口,把用户和设备硬件特性分开,使用户在编应用程序时不必涉及到具体硬件特性分开,使用户在编应用程序时不必涉及到具体设备,系统按用户要求控制设备工作。另外这个接口还设备
7、,系统按用户要求控制设备工作。另外这个接口还为新增加的用户设备提供一个和系统核心相连接的入口,为新增加的用户设备提供一个和系统核心相连接的入口,以便用户开发新的设备管理程序;以便用户开发新的设备管理程序;(4)提高设备和设备之间、)提高设备和设备之间、CPU和设备之间,以及进和设备之间,以及进程和进程之间的并行操作度,使操作系统获得最佳效率。程和进程之间的并行操作度,使操作系统获得最佳效率。8.1.2 设备管理的功能和任务设备管理的功能和任务设备管理的功能:设备管理的功能:(1)提供设备和管理系统的接口。)提供设备和管理系统的接口。(2)进行设备分配。按设备类型和相应分)进行设备分配。按设备类
8、型和相应分配算法把设备其他有关的硬件分配给请求该配算法把设备其他有关的硬件分配给请求该设备的进程,并把未分配到所请求调和或其设备的进程,并把未分配到所请求调和或其他有关硬件的进程放入等待队列;他有关硬件的进程放入等待队列;(3)实现设备和设备、设备和)实现设备和设备、设备和CPU等之间等之间的并行操作。的并行操作。(4)进行缓冲区管理。)进行缓冲区管理。8.2 数据传送控制方式数据传送控制方式控制设备和内存(或控制设备和内存(或CPU)之间的数据)之间的数据传送是设备管理的主要任务之一。传送是设备管理的主要任务之一。选择和衡量数据传送控制方式的原则:选择和衡量数据传送控制方式的原则:(1)数据
9、传送速度足够高,能满足用户需)数据传送速度足够高,能满足用户需要但又不丢失数据;要但又不丢失数据;(2)系统开销小,所需的处理控制程序少;)系统开销小,所需的处理控制程序少;(3)能充分发挥硬件资源的能力,使得)能充分发挥硬件资源的能力,使得I/O设备尽量忙,而设备尽量忙,而CPU等待时间少。等待时间少。8.2 数据传送控制方式数据传送控制方式外围设备和内存之间常用的数据传送控外围设备和内存之间常用的数据传送控制方式有以下制方式有以下4种:种:(1)程序直接控制方式)程序直接控制方式(2)中断控制方式)中断控制方式(3)DMA方式方式(4)通道方式)通道方式8.2.1 程序直接控制方式程序直接
10、控制方式程序直接控制方式(程序直接控制方式(programmed direct control)就是由用户进程来直接控制内)就是由用户进程来直接控制内存或存或CPU和外围设备之间的数据传送。和外围设备之间的数据传送。控制者:用户进程控制者:用户进程8.2.1 程序直接控制方式程序直接控制方式过程描述:过程描述:当用户进程需要数据时,它通过当用户进程需要数据时,它通过CPU发出启动外设发出启动外设准备数据的命令准备数据的命令“start”,然后,用户进程进入,然后,用户进程进入测试等待状态。测试等待状态。在等待时间内,在等待时间内,CPU不断地用一条测试指令检查描不断地用一条测试指令检查描述外围
11、设备工作状态的述外围设备工作状态的控制状态寄存器控制状态寄存器,而外围设,而外围设备只有将数据传送的准备工作做好后,才将该寄存备只有将数据传送的准备工作做好后,才将该寄存器置为完成状态。器置为完成状态。当当CPU检测到控制状态寄存器的检测到控制状态寄存器的“Done”信号之后,信号之后,设备开始往内存或设备开始往内存或CPU传送数据。传送数据。8.2.1 程序直接控制方式程序直接控制方式过程描述(续):过程描述(续):当用户进程需要输出数据时,也需要发送外当用户进程需要输出数据时,也需要发送外设启动命令并等待设备准备完成才能传送数设启动命令并等待设备准备完成才能传送数据。据。在在CPU与外设之
12、间有一个数据缓冲寄存器,与外设之间有一个数据缓冲寄存器,每次数据输入每次数据输入/输出时,先把所要输入(输输出时,先把所要输入(输出)的数据放入缓冲寄存器中,然后再取走。出)的数据放入缓冲寄存器中,然后再取走。程序直接控制方式程序直接控制方式接收到start命令做接收或发送数据准备准备完毕?标志触发器置“Done”等待CPU来的下条指令否是外围设备(a)发start命令标志触发器为Done?等待执行下条指令开始数据传送否是CPU(b)程序直接控制方式的特点程序直接控制方式的特点优点:实现简单,硬件支持少。优点:实现简单,硬件支持少。缺点:缺点:(1)CPU与外设只能串行工作。与外设只能串行工作
13、。CPU利用率低。利用率低。(2)CPU在一段时间内只能和一台外围设备交换在一段时间内只能和一台外围设备交换数据信息,从而不能实现设备之间的并行工作。数据信息,从而不能实现设备之间的并行工作。(3)由于程序直接控制方式依靠测试设备标志触)由于程序直接控制方式依靠测试设备标志触发器的状态位来控制数据传送,因此无法发现和处发器的状态位来控制数据传送,因此无法发现和处理由于设备或其他硬件所产生的错误。理由于设备或其他硬件所产生的错误。程序直接控制方式只适用于那些程序直接控制方式只适用于那些CPU执行速度慢,执行速度慢,而且外设较少的系统。而且外设较少的系统。8.2.2 中断方式中断方式为了减少直接控
14、制方式中为了减少直接控制方式中CPU等待时间以及提等待时间以及提高系统的并行工作程度,中断(高系统的并行工作程度,中断(interrupt)方)方式被用来控制外围设备和内存与式被用来控制外围设备和内存与CPU之间的数之间的数据传送。据传送。这种方式要求这种方式要求CPU与设备(或控制器)之间有与设备(或控制器)之间有相应的中断请求线,而且在相应的中断请求线,而且在设备控制器设备控制器的的控制控制状态寄存器状态寄存器的相应的的相应的中断允许位中断允许位。中中断断控控制制方方式式的的传传送送结结构构I/O控制器1I/O控制器nCPU内存I/O设备1:I/O设备n:数据线地址线控制线控制状态寄存器数
15、据缓冲寄存器启动位中断位Startint8.2.2 中断方式中断方式数据输入步骤数据输入步骤(1 1)首先,进程需要数据时,通过)首先,进程需要数据时,通过CPUCPU发出发出“Start”Start”指令启动外围设备准备数据。该指令同时还指令启动外围设备准备数据。该指令同时还将控制状态寄存器中的中断允许位打开,以便在需要将控制状态寄存器中的中断允许位打开,以便在需要时,中断程序可以被调用执行。时,中断程序可以被调用执行。(2 2)在进程发出指令启动设备之后,该进程放弃处理)在进程发出指令启动设备之后,该进程放弃处理机,待输入完成。从而进程调度程序调度其他就绪进机,待输入完成。从而进程调度程序
16、调度其他就绪进程占据处理机。程占据处理机。(3 3)当输入完成时,)当输入完成时,I/OI/O控制器通过中断请求线向控制器通过中断请求线向CPUCPU发出中断信号。发出中断信号。CPUCPU在接收到中断信号后,转向在接收到中断信号后,转向预先设计好的中断处理程序对数据传送进行相应的处预先设计好的中断处理程序对数据传送进行相应的处理。理。(4 4)在以后的某个时刻,进程调度程序选中提出请求)在以后的某个时刻,进程调度程序选中提出请求并得到了数据的进程,该进程从约定的内存特定单元并得到了数据的进程,该进程从约定的内存特定单元中取出数据继续工作。中取出数据继续工作。中断控制方式的处理过程中断控制方式
17、的处理过程接收到start命令准备数据并将其置入缓冲寄存器缓冲寄存器满吗?控制器发中断信号否是外围设备(a)向外设发start命令将中断允许位置1收到中断信号了吗?中断处理被中断进程执行是否CPU(b)调度其他进程其他进程执行中断控制方式的特点中断控制方式的特点优点:优点:CPU在进程上下文中执行时,也可以启动不同的设备启动在进程上下文中执行时,也可以启动不同的设备启动指令和允许中断指令,从而做到设备与设备之间和设备与指令和允许中断指令,从而做到设备与设备之间和设备与CPU之间的并行操作,提高了之间的并行操作,提高了CPU的利用率。的利用率。缺点:缺点:1. 由于在由于在I/O控制器的数据缓冲
18、寄存器装满后将会发生中控制器的数据缓冲寄存器装满后将会发生中断,而且数据缓冲寄存器通常较小,在一次数据传送过程断,而且数据缓冲寄存器通常较小,在一次数据传送过程中可能发生多次中断。中可能发生多次中断。2. 当较多外围设备并行操作时,由于中断次数急剧增加而当较多外围设备并行操作时,由于中断次数急剧增加而造成造成CPU无法响应中断和出现数据丢失现象。无法响应中断和出现数据丢失现象。3. 当外围设备的速度非常高时,可能造成数据缓冲寄存器当外围设备的速度非常高时,可能造成数据缓冲寄存器的数据由于的数据由于CPU来不及取走而丢失。来不及取走而丢失。8.2.3 DMA方式方式DMA方式又称直接存储器存取(
19、方式又称直接存储器存取(direct memory access)方式。)方式。基本思想:在内存和外设之间开辟直接的数据基本思想:在内存和外设之间开辟直接的数据交换通路。交换通路。DMA控制器中除了控制状态寄存器和数据缓冲控制器中除了控制状态寄存器和数据缓冲寄存器外,还包括传送字节计数器、内存地址寄存器外,还包括传送字节计数器、内存地址寄存器等。寄存器等。DMA方式挪用方式挪用CPU的一个工作周期把数据从的一个工作周期把数据从缓冲寄存器中直接送到内存地址寄存器中所指缓冲寄存器中直接送到内存地址寄存器中所指向的内存区域中。向的内存区域中。8.2.3 DMA方式方式DMA控制器可用来代替控制器可用
20、来代替CPU控制内存和控制内存和设备之间进行成批的数据交换。批量数设备之间进行成批的数据交换。批量数据的传送由计数器计数,并由内存地址据的传送由计数器计数,并由内存地址寄存器确定内存地址。寄存器确定内存地址。除了在数据传送开始时需要除了在数据传送开始时需要CPU启动指启动指令和在整个数据块传送结束时需要发中令和在整个数据块传送结束时需要发中断通知断通知CPU进行中断处理之外,不再需进行中断处理之外,不再需要要CPU频繁干涉。频繁干涉。DMA存取方式的结构存取方式的结构DMA控制器CPU内存I/O设备:数据Start控制状态寄存器数据缓冲寄存器启动位中断位int传送字节数计数器内存地址寄存器DM
21、A方式下的数据输入过程方式下的数据输入过程(1)当进程要求设备输入数据时,CPU把准备存放输入数据的内存始址以及要传送的字节数分别送入DMA控制器中的内存地址寄存器和传送字节计数器;另外,还把控制状态寄存器中的中断允许位和启动位置1;从而启动设备开始进行数据输入。(2)发出数据要求的进程进入等待状态,进程调度程序调度其他进程占据CPU;(3)输入设备不断地挪用CPU工作周期,将数据缓冲寄存器中的数据源源不断地写入内存,直到所要求的字节全部传送完毕。(4)DMA控制器在传送字节数完成时通过中断请求线发出中断信号,CPU在接收到中断信号后转中断处理程序进行善后处理。(5)中断处理结束时,CPU返回
22、被中断进程处执行或被调度到新的进程上下文环境中执行。DMA方式的数据传送过程方式的数据传送过程接收到start命令数据入缓冲寄存器传送字节数=0吗?发中断信号,停止I/O操作否是外围设备(a)向外设发start命令内存地址内存始址寄存器传送字节数字节计数器将中断允许位与启动位置1收到中断信号了吗?转中断处理是否CPU(b)当前进程等待,调度其他进程其他进程执行启动设备准备数据改变字节计数器与地址寄存器的内容缓冲寄存器内容入内存DMA方式与中断控制方式的主要区别方式与中断控制方式的主要区别中断方式是在数据缓冲寄存器满之后发中断方式是在数据缓冲寄存器满之后发中断要求中断要求CPU进行中断处理,而进
23、行中断处理,而DMA方方式则是在所要求传送的数据块全部传送式则是在所要求传送的数据块全部传送结束时要求结束时要求CPU进行中断处理。进行中断处理。中断方式的数据传送是在中断处理时由中断方式的数据传送是在中断处理时由CPU控制完成,而控制完成,而DMA方式是在方式是在DMA控控制器的控制下不经过制器的控制下不经过CPU控制完成的。控制完成的。DMA方式的特点方式的特点优点:优点:大大提高了大大提高了CPU利用率利用率不会造成大量外设并发操作时不会造成大量外设并发操作时CPU来不及处理或外设与来不及处理或外设与CPU速度不匹配带来的数据丢失问题。速度不匹配带来的数据丢失问题。局限性:局限性:DMA
24、方式对外设和管理和某些操作仍由方式对外设和管理和某些操作仍由CPU控制。控制。多个多个DMA控制器的同时使用会引起内存地址的冲突并使控制器的同时使用会引起内存地址的冲突并使控制过程进一步复杂化。控制过程进一步复杂化。多个多个DMA控制器同时使用不够经济。控制器同时使用不够经济。8.2.4 通道控制方式通道控制方式通道控制方式与通道控制方式与DMA方式相类似,也是一种以内方式相类似,也是一种以内存为中收,实现设备和内存直接交换数据的控制存为中收,实现设备和内存直接交换数据的控制方式。方式。与与DMA方式的不同点:方式的不同点:在在DMA方式中,数据的传送方向、存放数据的内存始方式中,数据的传送方
25、向、存放数据的内存始址及传送数据块的长度均由址及传送数据块的长度均由CPU控制,而在通道方式控制,而在通道方式中,这些都由通道来控制。中,这些都由通道来控制。DMA方式下,每台设备至少一个方式下,每台设备至少一个DMA控制器,而通道控制器,而通道方式下,一个通道控制多台设备与内存进行数据交换,方式下,一个通道控制多台设备与内存进行数据交换,从而通道方式进一步减轻了从而通道方式进一步减轻了CPU的压力,提高了计算的压力,提高了计算机系统操作的并行度。机系统操作的并行度。通道的定义通道的定义通道是一个独立于通道是一个独立于CPU的专管的专管I/O控制的控制的处理机处理机,它控制设备与内存直接进行数
26、,它控制设备与内存直接进行数据交换。据交换。通道有自己的通道指令,这些指令受通道有自己的通道指令,这些指令受CPU启动,并在操作结束时向启动,并在操作结束时向CPU发出发出中断信号。中断信号。通道方式的基本思想通道方式的基本思想在通道方式中,在通道方式中,I/O控制器中没有传送字控制器中没有传送字节计数器和内存地址寄存器;但多了通节计数器和内存地址寄存器;但多了通道设备控制器和指令执行机构。道设备控制器和指令执行机构。在通道方式下,在通道方式下,CPU只需发出启动指令,只需发出启动指令,指出相应的操作和指出相应的操作和I/O设备,该指令就可设备,该指令就可启动通道并使该通道从内存中调出相应启动
27、通道并使该通道从内存中调出相应的通道指令执行。的通道指令执行。通道指令通道指令通道指令一般包含被交换数据在内存中的位置、通道指令一般包含被交换数据在内存中的位置、传送方向、数据块长度以及被控制的传送方向、数据块长度以及被控制的I/O设备设备的地址信息、特征信息等。的地址信息、特征信息等。通道指令在通道中没有存储部件时存放在内存通道指令在通道中没有存储部件时存放在内存中。中。通道指令的格式一般由操作码、读通道指令的格式一般由操作码、读/写或控制、写或控制、计数段以及内存地址段和结束标志组成。计数段以及内存地址段和结束标志组成。通道指令在内存要求数据时由系统自动生成。通道指令在内存要求数据时由系统
28、自动生成。通道指令通道指令举例举例例:例:write 0 0 250 1850 write 1 1 250 720 上面的两条指令把一个记录的上面的两条指令把一个记录的500个字个字符分别写入从内存地址符分别写入从内存地址1850开始的开始的250个单个单元和从内存地址元和从内存地址720开始的开始的250个单元中。个单元中。其中假定其中假定write操作码后的操作码后的“1”是通道指是通道指令结束的标志,另一个令结束的标志,另一个“1”是记录结束的是记录结束的标志。指令中省略了设备号和设备特征。标志。指令中省略了设备号和设备特征。通道的类型通道的类型通道可以以分时方式同时执行几个通道程通道可
29、以以分时方式同时执行几个通道程序。序。按信息交换方式分为:按信息交换方式分为:字节多路通道:字节多路通道:以字节为单位传送数据,主要以字节为单位传送数据,主要用来连接大量的低速设备,如终端、打印机用来连接大量的低速设备,如终端、打印机数组多路通道:数组多路通道:以块为单位传送数据,具有传以块为单位传送数据,具有传送速率高和能分时操作不同设备等优点,主要送速率高和能分时操作不同设备等优点,主要用来连接中速块设备,如磁带机。用来连接中速块设备,如磁带机。选择通道:选择通道:一次只能执行一个通道指令程序。一次只能执行一个通道指令程序。传送速度高,常用来连接高速设备,以块为单传送速度高,常用来连接高速
30、设备,以块为单位成批传送数据,如磁盘机等。位成批传送数据,如磁盘机等。通道方式的数据传送结构通道方式的数据传送结构CPU内存字节多路通道数组多路通道选择通道I/O控制器终端I/O控制器I/O控制器终端终端I/O控制器I/O控制器I/O控制器磁带磁带磁带I/O控制器I/O控制器磁盘磁盘总线通道控制方式的数据输入过程通道控制方式的数据输入过程(1)当进程要求设备输入数据时,CPU发Start命令指明I/O操作、设备号和对应通道。(2)对应通道接收到CPU发来的启动指令后,读出存放在内存中的通道指令程序,设置对应设备的I/O控制器中的控制状态寄存器。(3)设备根据通道指令要求,把数据送往内存中指定区
31、域。(4)若传送数据结束,I/O控制器通过中断请求线发出中断信号请求CPU做中断处理。(5)中断处理结束后,CPU返回被中断处执行。8.3 中断技术中断技术数据传送控制方式中,除程序直接控制数据传送控制方式中,除程序直接控制方式外,无论采用其他何种方式,都需方式外,无论采用其他何种方式,都需要在设备和要在设备和CPU之间进行通信,由设备之间进行通信,由设备向向CPU发中断信号之后,发中断信号之后,CPU接收相应接收相应的中断信号进行处理。这几种方式的区的中断信号进行处理。这几种方式的区别只是中断处理的次数、数据传送方式别只是中断处理的次数、数据传送方式以及控制指令的执行方式等。以及控制指令的执
32、行方式等。8.3 中断技术中断技术在计算机系统中,除了在计算机系统中,除了I/O中断外,还存中断外,还存在着许多其他的突发事件,如电源掉电,在着许多其他的突发事件,如电源掉电,程序出错等,也会发出中断信号通知程序出错等,也会发出中断信号通知CPU做相应的处理。做相应的处理。8.3.1 中断的基本概念中断的基本概念中断(中断(interrupt):指计算机在执行期间,系统指计算机在执行期间,系统内发生任何非寻常的或非预期的急需处理事件,内发生任何非寻常的或非预期的急需处理事件,使得使得CPU暂时中断当前正在执行的程序而转去暂时中断当前正在执行的程序而转去执行相应的事件处理程序,待处理完毕后又返执
33、行相应的事件处理程序,待处理完毕后又返回原来被中断处理继续执行或调度新的进程执回原来被中断处理继续执行或调度新的进程执行的过程。行的过程。中断源:中断源:引起中断发生的事件引起中断发生的事件中断请求:中断请求:中断源向中断源向CPU发出的请求中断处理发出的请求中断处理的信号的信号 。中断响应:中断响应:CPU收到中断请求后转向相应的事收到中断请求后转向相应的事件处理程序称为中断响应。件处理程序称为中断响应。8.3.1 中断的基本概念(续)中断的基本概念(续)禁止中断:禁止中断:当当CPU内部的处理机状态字内部的处理机状态字PSW的的中断允许位被清除,不允许中断允许位被清除,不允许CPU响应中断
34、的情响应中断的情况称为禁止中断。况称为禁止中断。关中断:关中断:PSW的中断允许位被清除。的中断允许位被清除。开中断:开中断:PSW的中断允许位被设置。的中断允许位被设置。开中断和关中断是为了保证某些程序执行的原开中断和关中断是为了保证某些程序执行的原子性,如原语。子性,如原语。中断请求、开中断、关中断等都是由硬件实现中断请求、开中断、关中断等都是由硬件实现的。的。8.3.1 中断的基本概念(续)中断的基本概念(续)中断屏蔽:中断屏蔽:是指在中断请求产生之后,系统用是指在中断请求产生之后,系统用软件方式有选择地封锁部分中断而允许其余部软件方式有选择地封锁部分中断而允许其余部分的中断仍能得到响应
35、。分的中断仍能得到响应。中断屏蔽是通过每一类中断源设置一个中断屏中断屏蔽是通过每一类中断源设置一个中断屏蔽触发器来屏蔽它们的中断请求而实现的。蔽触发器来屏蔽它们的中断请求而实现的。有些中断请求是不能屏蔽甚至也不能禁止,这有些中断请求是不能屏蔽甚至也不能禁止,这些中断具有最高优先级,不管些中断具有最高优先级,不管CPU是否是关中是否是关中断的,只要这些中断请求一旦提出,断的,只要这些中断请求一旦提出,CPU必须必须立即响应。例如,电源掉电事件引发的中断。立即响应。例如,电源掉电事件引发的中断。 8.3.2 中断的分类和优先级中断的分类和优先级根据系统对中断处理的需要,操作系统根据系统对中断处理的
36、需要,操作系统一般对中断进行分类并对不同的中断赋一般对中断进行分类并对不同的中断赋予不同的处理优先级,以便在不同的中予不同的处理优先级,以便在不同的中断同时发生时,按轻重缓急进行处理。断同时发生时,按轻重缓急进行处理。根据中断源产生的条件,可把中断分为根据中断源产生的条件,可把中断分为外中断外中断和和内中断内中断。1.中断的分类中断的分类外中断外中断外中断:指来自外中断:指来自CPU和内存外部的中断。和内存外部的中断。外中断包括:外中断包括:I/O中断中断、外部信号中断外部信号中断、各种定时器引起的各种定时器引起的时钟中断时钟中断和调试程序和调试程序引起的引起的调试中断调试中断。外中断在狭意上
37、一般称为中断。外中断在狭意上一般称为中断。1.中断的分类中断的分类内中断内中断内中断:处理机和内存内部产生的中断。内中断:处理机和内存内部产生的中断。内中断一般称为陷阱内中断一般称为陷阱(trap)。内中断包括:内中断包括:程序运算引起的各种错误程序运算引起的各种错误,如地址非法、,如地址非法、校验错、页面失效、存取访问控制错、算术操作溢校验错、页面失效、存取访问控制错、算术操作溢出、数据格式非法、除数为出、数据格式非法、除数为0、非法指令等。、非法指令等。用户程序执行特权指令用户程序执行特权指令;分时系统中的时间片中断;分时系统中的时间片中断;从用户态到核心态的切换从用户态到核心态的切换。2
38、. 中断的优先级中断的优先级 按中断源的轻重缓急,按中断源的轻重缓急,OS对不同的中断赋对不同的中断赋予不同的优先级。予不同的优先级。 如在如在UNIX系统中,外中断和陷阱的优先级共系统中,外中断和陷阱的优先级共分为分为8级。级。为了禁止中断和屏蔽中断,为了禁止中断和屏蔽中断,CPU的的PSW中也中也设置相应的优先级。设置相应的优先级。如果中断源的优先级高如果中断源的优先级高于于PSW的优先级,则的优先级,则CPU响应该中断源的中断响应该中断源的中断请求,否则请求,否则CPU屏蔽中断源的中断请求。屏蔽中断源的中断请求。中断和陷阱的主要区别中断和陷阱的主要区别(1 1)中断的优先级在系统设计时给
39、定)中断的优先级在系统设计时给定,在系统运行期,在系统运行期间是固定的,而间是固定的,而陷阱的优先级陷阱的优先级则根据执行情况由系统则根据执行情况由系统程序程序动态设定动态设定。(2 2)陷阱通常由)陷阱通常由CPUCPU正在执行的指令引起,而中断则正在执行的指令引起,而中断则是由与现行指令无关的中断源引起;是由与现行指令无关的中断源引起;(3 3)陷阱处理程序是为当前进程提供的服务,而中断)陷阱处理程序是为当前进程提供的服务,而中断处理程序不是为当前进程服务的。处理程序不是为当前进程服务的。(4 4)CPUCPU在执行完一条指令之后,在下一条指令开始在执行完一条指令之后,在下一条指令开始执行
40、之前响应中断,而在一条指令执行中也可以响应执行之前响应中断,而在一条指令执行中也可以响应陷阱。陷阱。(5 5)在有的系统中,陷阱处理程序被规定在各自的进)在有的系统中,陷阱处理程序被规定在各自的进程上下文中执行,而中断处理程序则在系统上下文中程上下文中执行,而中断处理程序则在系统上下文中执行。执行。8.3.3 软中断软中断上面讨论的中断和陷阱都可以看作是硬中断,上面讨论的中断和陷阱都可以看作是硬中断,因为它们都要通过硬件产生相应的中断请求。因为它们都要通过硬件产生相应的中断请求。软中断:通信进程之间用来模拟硬中断的一种软中断:通信进程之间用来模拟硬中断的一种信号通信方式。信号通信方式。软中断与
41、硬中断的相同点:当中断源发中断请软中断与硬中断的相同点:当中断源发中断请求或软中断信号后,求或软中断信号后,CPU或接收进程在或接收进程在适当的适当的时机时机自动进行中断处理或完成软中断信号所对自动进行中断处理或完成软中断信号所对应的功能。应的功能。8.3.3 软中断软中断如果软中断的接收进程是占据处理机的,则与如果软中断的接收进程是占据处理机的,则与中断处理相同,该接收进程在接收到软中断信中断处理相同,该接收进程在接收到软中断信号后将立即转去执行该中断信号所对应的功能。号后将立即转去执行该中断信号所对应的功能。软中断的概念主要来源于软中断的概念主要来源于UNIX系统。系统。在有些系统中,在有
42、些系统中,大部分的陷阱是转化为软中断大部分的陷阱是转化为软中断处理的处理的。由于陷阱主要与当前进程有关,因此,。由于陷阱主要与当前进程有关,因此,如果当前执行指令产生陷阱的话,则向当前执如果当前执行指令产生陷阱的话,则向当前执行进程发出一个软中断信号从而立即进入陷阱行进程发出一个软中断信号从而立即进入陷阱处理程序。处理程序。中中断断处处理理过过程程判断中断响应条件保存被中断现场关中断执行中断处理子程序分析中断原因转中断处理子程序恢复现场开中断返回中断点8.4 缓冲技术缓冲技术外围设备与处理机速度不匹配的问题可外围设备与处理机速度不匹配的问题可以采用设置缓冲区的方法解决。以采用设置缓冲区的方法解
43、决。例:在设置了缓冲区之后,计算进程可例:在设置了缓冲区之后,计算进程可把数据首先输出到缓冲区,然后继续执把数据首先输出到缓冲区,然后继续执行;而打印机则可从缓冲区取出数据慢行;而打印机则可从缓冲区取出数据慢慢打印。慢打印。另外,从减少中断的次数看,也存在引另外,从减少中断的次数看,也存在引入缓冲区的必要性。入缓冲区的必要性。在在DMA方式或通道方式控制数据传送时,方式或通道方式控制数据传送时,如果不划分专用的内存区或专用缓冲器如果不划分专用的内存区或专用缓冲器来存放数据的话,会因为要求数据的进来存放数据的话,会因为要求数据的进程所拥有的内存区不够或存放数据的内程所拥有的内存区不够或存放数据的
44、内存始址计算困难等原因而造成某个进程存始址计算困难等原因而造成某个进程长期占有通道或长期占有通道或DMA控制器及设备,从控制器及设备,从而产生瓶颈问题。而产生瓶颈问题。为了匹配外设与为了匹配外设与CPU之间的处理速度,之间的处理速度,为了减少中断次数和中断处理时间,同为了减少中断次数和中断处理时间,同时也是为了解决时也是为了解决DMA或通道方式时的瓶或通道方式时的瓶颈问题颈问题,在设备管理中需要引入缓冲技,在设备管理中需要引入缓冲技术。术。缓冲的实现方法:缓冲的实现方法:采用专用硬件缓冲器:如缓冲寄存器采用专用硬件缓冲器:如缓冲寄存器在内存划出一块具有在内存划出一块具有n个单元的专用缓冲区,个
45、单元的专用缓冲区,以便存放输入输出的数据。(软件缓冲)以便存放输入输出的数据。(软件缓冲)8.4.2 缓冲的种类缓冲的种类根据系统设置的缓冲区的个数,可把缓根据系统设置的缓冲区的个数,可把缓冲技术分为:冲技术分为:单缓冲单缓冲双缓冲双缓冲多缓冲多缓冲缓冲池缓冲池8.4.2 缓冲的种类缓冲的种类单缓冲单缓冲单缓冲是在设备和单缓冲是在设备和CPU之间设置一个缓之间设置一个缓冲器,当设备和冲器,当设备和CPU交换数据时,先把交换数据时,先把被交换的数据写入缓冲器,需要数据的被交换的数据写入缓冲器,需要数据的设备或设备或CPU从缓冲器取走数据。从缓冲器取走数据。由于缓冲区属临界资源,不允许多个进由于缓
46、冲区属临界资源,不允许多个进程同时对一个缓冲器进行操作,因此设程同时对一个缓冲器进行操作,因此设备之间不能通过单缓冲达到并行操作。备之间不能通过单缓冲达到并行操作。8.4.2 缓冲的种类缓冲的种类双缓冲双缓冲双缓冲可以解决两台外设之间的并行操双缓冲可以解决两台外设之间的并行操作问题。其中一个缓冲器可以作为数据作问题。其中一个缓冲器可以作为数据输入缓冲,另一个可以作为输出缓冲。输入缓冲,另一个可以作为输出缓冲。双缓冲仍然只是设备之间、设备和双缓冲仍然只是设备之间、设备和CPU之间并行操作的简单模型,不能在实际之间并行操作的简单模型,不能在实际系统中应用。系统中应用。实际系统中使用多缓冲或缓冲池。
47、实际系统中使用多缓冲或缓冲池。8.4.2 缓冲的种类缓冲的种类多缓冲和缓冲池多缓冲和缓冲池多缓冲是把多个缓冲区连接起来组成两多缓冲是把多个缓冲区连接起来组成两部分,一部分专门用来输入,另一部分部分,一部分专门用来输入,另一部分专门用来输出。专门用来输出。缓冲池是把多个缓冲区连接起来统一管缓冲池是把多个缓冲区连接起来统一管理,既可用于输入也可用于输出的缓冲理,既可用于输入也可用于输出的缓冲结构。结构。8.4.3 缓冲池的管理缓冲池的管理缓冲池的结构:缓冲池由多个缓冲区组缓冲池的结构:缓冲池由多个缓冲区组成,而一个缓冲区由两部分组成:一部成,而一个缓冲区由两部分组成:一部分用来标识该缓冲器和用于管
48、理的缓冲分用来标识该缓冲器和用于管理的缓冲首部,另一部分是用于存放数据的缓冲首部,另一部分是用于存放数据的缓冲体。体。对缓冲池的管理是通过对每一个缓冲器对缓冲池的管理是通过对每一个缓冲器缓冲首部的管理实现的。缓冲首部的管理实现的。设备号数据块号缓冲器号互斥标识位连接指针缓冲首部:缓冲区队列缓冲区队列系统把各缓冲区按其使用状况连成三种系统把各缓冲区按其使用状况连成三种队列:队列:(1)空白缓冲队列)空白缓冲队列em,其队首指针为,其队首指针为F(em),队尾指针为,队尾指针为L(em);(2)装满输入数据的输入缓冲队列)装满输入数据的输入缓冲队列in,其,其队首指针为队首指针为F(in),队尾指
49、针为,队尾指针为L(in);(3)装满输出数据的输出缓冲队列)装满输出数据的输出缓冲队列out,其,其队首指针为队首指针为F(out),队尾指针为,队尾指针为L(out);缓冲区队列缓冲区队列缓冲区1 缓冲区2 F(em)L(em)缓冲区1 缓冲区m F(in)L(in)缓冲区n F(out)L(out)工作缓冲区工作缓冲区除空白缓冲队列、输入缓冲队列和输出缓冲队列外,除空白缓冲队列、输入缓冲队列和输出缓冲队列外,系统(或用户进程)从这三种队列中申请和取出缓系统(或用户进程)从这三种队列中申请和取出缓冲区,并用得到的缓冲区进行存数、取数操作,结冲区,并用得到的缓冲区进行存数、取数操作,结束后再
50、将缓冲区放入相应的队列。这些缓冲区被称束后再将缓冲区放入相应的队列。这些缓冲区被称为工作缓冲区。为工作缓冲区。在缓冲池中,有在缓冲池中,有4种工作缓冲区:种工作缓冲区:(1)(1)用于收容设备输入数据的收容输入缓冲区用于收容设备输入数据的收容输入缓冲区hinhin;(2)(2)用于提取设备输入数据的提取输入缓冲区用于提取设备输入数据的提取输入缓冲区sinsin;(3)(3)用于收容设备输出数据的收容输出缓冲区用于收容设备输出数据的收容输出缓冲区houthout;(4)(4)用于提取设备输出数据的提取输出缓冲区用于提取设备输出数据的提取输出缓冲区soutsout;缓冲池的工作缓冲区缓冲池的工作缓
51、冲区hin缓冲区1 收容输入sout缓冲区n sin缓冲区mhout缓冲区z提取输出I/O设备提取输入收容输出CPU缓冲池2. 缓冲池管理缓冲池管理对缓冲池的管理由以下几个操作组成:对缓冲池的管理由以下几个操作组成:(1) (1) 从缓冲区队列中按一定的规则(如从缓冲区队列中按一定的规则(如FIFOFIFO)选取一个缓)选取一个缓冲区的过程冲区的过程take_buf(type)take_buf(type);(2) (2) 把缓冲区按一定的规则插入相应的缓冲区队列中的过把缓冲区按一定的规则插入相应的缓冲区队列中的过程程add_buf(type, number)add_buf(type, numb
52、er);(3) (3) 供进程申请缓冲区用的过程供进程申请缓冲区用的过程get_buf(type, number);get_buf(type, number);(4) (4) 供进程将缓冲区放入相应缓冲区队列的过程供进程将缓冲区放入相应缓冲区队列的过程put_buf(type, work_buf)put_buf(type, work_buf)。 参数参数typetype表示缓冲队列类型,表示缓冲队列类型,numbernumber为缓冲区号,为缓冲区号,work_bufwork_buf表示工作缓冲区类型。表示工作缓冲区类型。缓冲池的工作过程缓冲池的工作过程收容输入收容输入首先,输入进程调用首先,
53、输入进程调用get_buf(em,number)过程从空白缓冲区队列中取出一个缓冲过程从空白缓冲区队列中取出一个缓冲号为号为number的空白缓冲区,将其作为收的空白缓冲区,将其作为收容输入缓冲区容输入缓冲区hin,当,当hin中装满了由输入中装满了由输入设备输入的数据之后,系统调用过程设备输入的数据之后,系统调用过程put_buf(in, hin)将该缓冲区插入输入缓冲将该缓冲区插入输入缓冲区队列区队列in中;中;缓冲池的工作过程缓冲池的工作过程收容输出收容输出当进程需要输出数据时,输出进程经过当进程需要输出数据时,输出进程经过缓冲管理程序调用过程缓冲管理程序调用过程get_buf(em,
54、number)从空白缓冲区队列中取出一个空从空白缓冲区队列中取出一个空白缓冲区白缓冲区number作为收容输出缓冲区作为收容输出缓冲区hout,待,待hout中装满输出数据后,系统中装满输出数据后,系统再调用过程再调用过程put_buf(out, hout)将该缓冲将该缓冲区插入输出缓冲队列区插入输出缓冲队列out。缓冲池的工作过程缓冲池的工作过程提取提取对缓冲区的输入数据和输出数据的提取也是由对缓冲区的输入数据和输出数据的提取也是由过程过程get_buf和和put_buf实现的。实现的。get_buf(out, number)get_buf(out, number)从输出缓冲队列中取出装满从
55、输出缓冲队列中取出装满输出数据的缓冲区输出数据的缓冲区numbernumber,将其作为,将其作为soutsout。当。当soutsout中的数据输出完毕后,系统调用过程中的数据输出完毕后,系统调用过程put_buf(em, sout)put_buf(em, sout)将该缓冲区插入空白缓冲队列将该缓冲区插入空白缓冲队列emem中。中。get_buf(in, number)get_buf(in, number)从输入缓冲队列中取出装满从输入缓冲队列中取出装满输入数据的缓冲区输入数据的缓冲区numbernumber,将其作为,将其作为sinsin。当。当CPUCPU提取完所需数据后,系统调用过程
56、提取完所需数据后,系统调用过程put_buf(em, sin)put_buf(em, sin)将该缓冲区插入空白缓冲队列将该缓冲区插入空白缓冲队列emem中。中。对缓冲队列的管理对缓冲队列的管理对缓冲队列中的缓冲区的排列、插入、对缓冲队列中的缓冲区的排列、插入、取出都有一定的规则。最简单的方法是取出都有一定的规则。最简单的方法是FIFO采用采用FIFO,过程,过程put_buf每次把缓冲区插每次把缓冲区插入相应的队尾,而过程入相应的队尾,而过程get_buf则取出相则取出相应缓冲队列的第一个缓冲区。应缓冲队列的第一个缓冲区。进程对缓冲队列的访问应该是同步的,进程对缓冲队列的访问应该是同步的,对
57、具体缓冲区的访问是互斥的。对具体缓冲区的访问是互斥的。对缓冲队列的管理(续)对缓冲队列的管理(续)get_buf和和put_buf的过程描述如下:的过程描述如下:S(type)为互斥信号量,初值为为互斥信号量,初值为1RS(type)为资源数目的信号量,初值为为资源数目的信号量,初值为n,n为队列长度。为队列长度。Get_buf(type, number): begin P(RS(type) P(S(type) Pointer of buffer(number) = take(type, number) V(S(type) end对缓冲队列的管理(续)对缓冲队列的管理(续)Put_buf(ty
58、pe, number): begin P(S(type) add_buf(type, number) V(S(type) V(RS(type) end8.5 设备分配设备分配由于设备、控制器和通道资源的有限性,由于设备、控制器和通道资源的有限性,不是每个进程随时随地都能得到这些资不是每个进程随时随地都能得到这些资源。因此,进程必须首先向设备管理程源。因此,进程必须首先向设备管理程序提出资源申请,然后,由设备分配程序提出资源申请,然后,由设备分配程序根据相应的分配算法为进程分配资源。序根据相应的分配算法为进程分配资源。如果申请进程得不到它所申请的资源时,如果申请进程得不到它所申请的资源时,将被放
59、入资源等待将被放入资源等待 队列,直到所需要的队列,直到所需要的资源被释放。资源被释放。8.5.1 设备分配用的数据结构设备分配用的数据结构设备控制表设备控制表DCT(Device Control Table)系统设备表系统设备表SDT(System Device Table)控制器表控制器表COCT(COntroler Control Table)通道控制表通道控制表CHCT(CHannel Control Table)1. 设备控制表设备控制表DCT设备控制表反映设备的特性、设备和设备控制表反映设备的特性、设备和I/O控制器的连接情况。包括设备标识、使控制器的连接情况。包括设备标识、使用状
60、态和等待使用该设备的进程队列等。用状态和等待使用该设备的进程队列等。系统中每个设备都必须有一张系统中每个设备都必须有一张DCT,且,且在系统生成时或在该设备连接时创建,在系统生成时或在该设备连接时创建,但表中的内容则根据系统执行情况而被但表中的内容则根据系统执行情况而被动态地修改。动态地修改。1. 设备控制表设备控制表DCT(续)(续)DCT包括以下内容:包括以下内容:(1)(1)设备标识符;设备标识符;(2) (2) 设备类型,反映设备特性,如块设备、字符设备等。设备类型,反映设备特性,如块设备、字符设备等。(3)(3)设备地址或设备号,这个地址可以是和内存统一编设备地址或设备号,这个地址可
61、以是和内存统一编址的,也可以是单独编址的。址的,也可以是单独编址的。(4)(4)设备状态,指设备是处理工作还是空闲。设备状态,指设备是处理工作还是空闲。(5)(5)等待队列指针:等待使用设备的进程队列的队首和等待队列指针:等待使用设备的进程队列的队首和队尾指针。队尾指针。(6)I/O(6)I/O控制器指针,该指针指向该设备相连接的控制器指针,该指针指向该设备相连接的I/OI/O控控制器。制器。2. 系统设备表系统设备表SDT系统设备表系统设备表SDT整个系统一张,它记录已被整个系统一张,它记录已被连接到系统中的所有物理设备的情况,并连接到系统中的所有物理设备的情况,并为每个物理设备设一表项。为
62、每个物理设备设一表项。SDT包括:包括:(1)DCT(1)DCT指针,该指针指向有关设备的设备控制指针,该指针指向有关设备的设备控制表;表;(2)(2)正在使用设备的进程标识;正在使用设备的进程标识;(3)(3)设备类型和设备标识符,该项的意义与设备类型和设备标识符,该项的意义与DCTDCT中的相同。中的相同。3. 控制器表控制器表COCTCOCT也是每个控制器一张,它反映也是每个控制器一张,它反映I/O控制器的使用状态以及和通道的连接情控制器的使用状态以及和通道的连接情况等。况等。在在DMA方式下,没有控制器表。方式下,没有控制器表。4. 通道控制表通道控制表CHCT该表只在通道控制方式的系
63、统中存在,该表只在通道控制方式的系统中存在,也是每个通道一张。也是每个通道一张。CHCT包括:包括:通道标识符通道标识符通道忙通道忙/ /空闲标识空闲标识等待通道的进程队列指针等待通道的进程队列指针数据结构表数据结构表设备类型设备类型设备标识设备标识设备忙设备忙/闲标记闲标记COCT指针指针设备等待队列首设备等待队列首设备等待队列尾设备等待队列尾通道标识通道标识通道忙通道忙/闲标记闲标记通道等待队列首通道等待队列首通道等待队列尾通道等待队列尾控制器标识控制器标识控制器忙控制器忙/闲标记闲标记CHCT指针指针控制器等待队列首控制器等待队列首控制器等待队列尾控制器等待队列尾设备类型设备类型设备标识
64、设备标识获得设备的进程获得设备的进程DCT指针指针表目表目1表目表目i iSDTDCTCOCTCHCT8.5.2 设备分配的原则设备分配的原则设备分配的总原则:设备分配的总原则:既要充分发挥设备的效率,尽可能的让设备既要充分发挥设备的效率,尽可能的让设备忙,但又要避免由于不合理的分配方法造成忙,但又要避免由于不合理的分配方法造成进程死锁;进程死锁;把用户程序和具体物理设备隔离开来,即用把用户程序和具体物理设备隔离开来,即用户程序面对的是逻辑设备,而分配程序在系户程序面对的是逻辑设备,而分配程序在系统把逻辑设备转换成物理设备之后,再根据统把逻辑设备转换成物理设备之后,再根据要求的物理设备号进行分
65、配。要求的物理设备号进行分配。设备分配的方式设备分配的方式静态分配:在用户程序开始执行前,由系统一静态分配:在用户程序开始执行前,由系统一次分配该作业所需的全部设备、控制器和通道。次分配该作业所需的全部设备、控制器和通道。动态分配:在进程执行过程中根据执行需要进动态分配:在进程执行过程中根据执行需要进行分配。当进程需要设备时,通过系统调用命行分配。当进程需要设备时,通过系统调用命令向系统提出设备请求,由系统按照事先规定令向系统提出设备请求,由系统按照事先规定的策略给进程分配所需要的设备、的策略给进程分配所需要的设备、I/O控制器控制器和通道,一旦用完后,立即释放。和通道,一旦用完后,立即释放。
66、动态分配方式有利于提高设备利用率,但如果动态分配方式有利于提高设备利用率,但如果分配算法不当,会造成进程死锁。分配算法不当,会造成进程死锁。设备分配策略设备分配策略(1)先请求先分配)先请求先分配(2)优先级高者分配)优先级高者分配8.6 I/O进程控制进程控制I/O控制:从用户进程的输入输出请求开控制:从用户进程的输入输出请求开始,给用户进程分配设备和启动有关设始,给用户进程分配设备和启动有关设备进行备进行I/O操作,以及在操作,以及在I/O操作完成之操作完成之后响应中断,进行善后处理为止的整个后响应中断,进行善后处理为止的整个系统控制过程称为系统控制过程称为I/O控制。控制。8.6.2 I
67、/O控制的功能控制的功能中断原因分析唤醒中断处理程序外设中断请求中断响应I/O请求处理缓冲区管理用户进程I/O请求启动I/O指令、设备驱动程序或通道程序设备分配程序8.6.2 I/O控制的功能控制的功能I/O请求处理是用户进程和设备管理程序请求处理是用户进程和设备管理程序接口的一部分,它把用户进程的接口的一部分,它把用户进程的I/O请求请求变换为设备管理程序所能接受的信息。变换为设备管理程序所能接受的信息。用户的用户的I/O请求通常包括:请求通常包括:所申请进行所申请进行I/OI/O操作的逻辑设备名操作的逻辑设备名要求的操作要求的操作传送数据的长度传送数据的长度起始地址。起始地址。I/O请求处
68、理模块请求处理模块I/O处理模块对用户的处理模块对用户的I/O请求进行处理:请求进行处理:首先将首先将I/OI/O请求中的逻辑名转换为对应的物理设请求中的逻辑名转换为对应的物理设备名;备名;检查检查I/OI/O请求命令中是否有参数错误;如果正确,请求命令中是否有参数错误;如果正确,则把该命令插入指向相应则把该命令插入指向相应DCTDCT的的I/OI/O请求队列;请求队列;启动设备分配程序。启动设备分配程序。在有通道的系统中,在有通道的系统中, I/OI/O请求处理模块还将按请求处理模块还将按I/OI/O请求命令的要求编制出通道程序。请求命令的要求编制出通道程序。I/O控制模块功能描述控制模块功
69、能描述在设备分配程序为在设备分配程序为I/O请求分配了相应的设请求分配了相应的设备、控制器和通道之后,备、控制器和通道之后, I/O控制模块还将控制模块还将启动缓冲管理模块为此次启动缓冲管理模块为此次I/O传送申请必要传送申请必要的缓冲区。的缓冲区。缓冲区的申请也可以在设备分配之前进行。缓冲区的申请也可以在设备分配之前进行。例如:例如:UNIX系统首先请求缓冲区,然后把系统首先请求缓冲区,然后把I/O请求命令写到缓冲区中并将该缓冲区挂请求命令写到缓冲区中并将该缓冲区挂到设备的到设备的I/O请求队列上。请求队列上。I/O控制模块功能描述(续)控制模块功能描述(续)在数据传送结束后,外设发出中断请
70、求,在数据传送结束后,外设发出中断请求,I/O过程将调用中断处理程序和做出中断响过程将调用中断处理程序和做出中断响应。应。对于不同的中断,其善后处理不同。如处对于不同的中断,其善后处理不同。如处理结束中断时,要释放相应的设备、控制理结束中断时,要释放相应的设备、控制器和通道,并唤醒正在等候设备的进程,器和通道,并唤醒正在等候设备的进程,另外还要检查是否还有等待该设备的另外还要检查是否还有等待该设备的I/O请请求命令,如有,则要通知求命令,如有,则要通知I/O控制过程进行控制过程进行下一个下一个I/O传送。传送。8.6.3 I/O控制的实现控制的实现I/O控制过程有如下三种实现方式:控制过程有如
71、下三种实现方式:作为请求作为请求I/OI/O操作进程的一部分实现;操作进程的一部分实现;作为当前进程的一部分实现;作为当前进程的一部分实现;由专门的系统进程由专门的系统进程I/OI/O进程完成。进程完成。1. 作为请求作为请求I/O操作进程的一部分实现操作进程的一部分实现这种情况下,请求这种情况下,请求I/O操作的进程应具有操作的进程应具有良好的实时性,且系统能根据在中断信良好的实时性,且系统能根据在中断信号的内容准确地调度到请求所对应的号的内容准确地调度到请求所对应的I/O操作进程占据处理机,因为在大多数情操作进程占据处理机,因为在大多数情况下,当一个进程发出况下,当一个进程发出I/O请求命
72、令后,请求命令后,都被阻塞睡眠。都被阻塞睡眠。2.作为当前进程的一部分实现作为当前进程的一部分实现这种方式不要求系统具有较高的实时性。但由这种方式不要求系统具有较高的实时性。但由于当前进程与完成的于当前进程与完成的I/O操作无关,所以当前操作无关,所以当前进程不能接受进程不能接受I/O请求命令的启动请求命令的启动I/O操作。操作。当前进程可以在接收到中断信号后,将中断信当前进程可以在接收到中断信号后,将中断信号交给号交给I/O控制模块处理。控制模块处理。如果让请求如果让请求I/O操作的进程调用操作的进程调用I/O操作控制部操作控制部分(分(I/O请求处理、设备分配、缓冲区分配等)请求处理、设备
73、分配、缓冲区分配等),而让当前进程负责调用中断处理部分是一种,而让当前进程负责调用中断处理部分是一种可行的可行的I/O控制方案。控制方案。3.由由I/O进程完成进程完成在用户进程发出在用户进程发出I/O请求命令之后,系统请求命令之后,系统调度调度I/O进程执行,控制进程执行,控制I/O操作。操作。在外设发出中断请求之后,在外设发出中断请求之后,I/O进程也被进程也被调度执行以响应中断。调度执行以响应中断。I/O请求处理模块、设备分配模块、缓冲请求处理模块、设备分配模块、缓冲区管理模块、中断原因分析、中断处理区管理模块、中断原因分析、中断处理模块和设备驱动程序模块等都是模块和设备驱动程序模块等都
74、是I/O进程进程的一部分。的一部分。I/O进程的实现方式进程的实现方式(1)每类设备设一个专门的)每类设备设一个专门的I/O进程,进程,且该进程只能在系统态下执行;且该进程只能在系统态下执行;(2)整个系统设一个)整个系统设一个I/O进程,全面负进程,全面负责系统的数据传送工作;责系统的数据传送工作;(3)每类设备设一个专门的)每类设备设一个专门的I/O进程,进程,但该进程既可以在系统态下执行,也可但该进程既可以在系统态下执行,也可以在用户态下执行。以在用户态下执行。8.7 设备驱动程序设备驱动程序设备驱动程序是驱动物理设备和设备驱动程序是驱动物理设备和DMA或或I/O控制器等直接进行控制器等
75、直接进行I/O操作的子程序操作的子程序的集合。的集合。负责设置相应设备有关寄存器的值,启负责设置相应设备有关寄存器的值,启动设备进行动设备进行I/O操作,指定操作的类型和操作,指定操作的类型和数据流向等。数据流向等。设备驱动程序的管理设备驱动程序的管理为了对驱动程序进行管理,系统中设有设备开为了对驱动程序进行管理,系统中设有设备开关表关表DST(Device Switch Table)。设备开关表中给出相应设备的各种操作子程序设备开关表中给出相应设备的各种操作子程序的入口地址。的入口地址。设备开关表通常是二维结构,也是设备开关表通常是二维结构,也是I/O进程的进程的一个数据结构。一个数据结构。当当I/O控制过程为进程分配设备和缓冲区之后,控制过程为进程分配设备和缓冲区之后,可以使用设备开关表调用所需的驱动程序进行可以使用设备开关表调用所需的驱动程序进行I/O操作。操作。本章小结本章小结设备的分类设备的分类设备管理的功能设备管理的功能数据传送控制方式数据传送控制方式(4种)种)中断技术和缓冲技术中断技术和缓冲技术设备分配方法:数据结构和算法设备分配方法:数据结构和算法I/O控制过程控制过程设备驱动程序设备驱动程序