输入输出设备管理.ppt

上传人:本田雅阁 文档编号:2769119 上传时间:2019-05-13 格式:PPT 页数:73 大小:4.35MB
返回 下载 相关 举报
输入输出设备管理.ppt_第1页
第1页 / 共73页
输入输出设备管理.ppt_第2页
第2页 / 共73页
输入输出设备管理.ppt_第3页
第3页 / 共73页
输入输出设备管理.ppt_第4页
第4页 / 共73页
输入输出设备管理.ppt_第5页
第5页 / 共73页
点击查看更多>>
资源描述

《输入输出设备管理.ppt》由会员分享,可在线阅读,更多相关《输入输出设备管理.ppt(73页珍藏版)》请在三一文库上搜索。

1、计算机操作系统 主讲: 四川大学计算机学院 杜忠军,第八章 设备管理 (Devices Management),教学目的: 设备管理不但要管理实际I/O操作的设备(如磁盘机、打印机),还要管理诸如设备控制器、DMA控制器、中断控制器、I/O处理机(通道)等支持设备。设备管理包括各种设备分配、缓冲区管理和实际物理IO设备操作,通过管理达到提高设备利用率和方便用户。,教学要求:,了解设备的分类,熟悉设备管理的目标和功能。 熟悉程序I/O方式、中断方式、DMA方式和通道方式四种I/O的控制方式;掌握通道的概念,熟悉通道类型。 熟悉缓冲的概念,熟悉单缓冲、双缓冲和多缓冲和缓冲池工作原理。 了解在进行设

2、备分配时应考虑的设备的固有属性、设备的分配算法、设备分配的安全性和设备的独立性等因素;掌握设备分配中数据结构,熟悉设备分配的流程;掌握SPOOLing技术概念和SPOOLing系统的组成。 熟悉设备处理程序的功能和处理方式,熟悉设备处理程序的处理过程。,本章的主要内容如下: 输入/输出系统 设备控制器 输入/输出控制方式 缓冲管理 输入/输出软件 设备分配与回收,8.1输入输出系统,8.1.1 I/O系统 1.大型机通道系统,图8.1 大型计算机组织结构,图8.2 通过网络共享系统之间的设备,8.1.1 I/O系统-1,2小型计算机和微型计算机总线系统,图8.3 小型机总线的组织结构,8.1.

3、1 I/O系统-2, 1984年推出的工业标准结构ISA(Industry Standard Architecture)总线,其带宽为2Mb/s,适用于处理器为80286的计算机。 1988年推出的扩展工业标准结构EISA(Expansion Industry Standard Architecture)总线,带宽可以达到32Mb/s,适用于处理器为80386类的计算机。 1990年,为了适应多媒体、高质量图形处理技术和网络应用,推出了适合处理器为80486类计算机的VESA(Video Electronic Standard Association)总线,带宽增加到132Mb/s。 1992

4、年,随着Pentium系列CPU的出现,单总线结构已经不能满足系统性能要求,推出了的具有全局总线和局部总线的PCI总线,如图8.4所示。,8.1.1 I/O系统-3,图8.4 通用计算机组织结构,8.1.2设备分类,I/O设备的种类繁多,从OS观点来看,其重要的性能指标有:数据传输速率、数据的传输单位、设备的共享属性等。 1按传输速率分类 低速设备:指传输速率为每秒钟几个字节到数百个字节的设备。典型的设备有键盘、鼠标、语音的输入等; 中速设备:指传输速率在每秒钟数千个字节至数十千个字节的设备。典型的设备有行式打印机、激光打印机等; 高速设备:指传输速率在数百千个字节至数兆字节的设备。典型的设备

5、有磁带机、磁盘机、光盘机等。,8.1.2设备分类-1,2按信息交换的单位分类 块设备(Block Device):指以数据块为单位来组织和传送数据信息的设备。这类设备用于存储信息,有磁盘和磁带等。它属于有结构设备。典型的块设备是磁盘,每个盘块的大小为512B4KB,磁盘设备的基本特征是:传输速率较高,通常每秒钟为几兆位;它是可寻址的,即可随机地读/写任意一块;磁盘设备的I/O采用DMA方式。 字符设备(Character Device):指以单个字符为单位来传送数据信息的设备。这类设备一般用于数据的输入和输出,有交互式终端、打印机等。它属于无结构设备。字符设备的基本特征是:传输速率较低;不可寻

6、址,即不能指定输入时的源地址或输出时的目标地址;字符设备的IO常采用中断驱动方式。,8.1.2设备分类-2,3按资源分配的角度分类 独占设备:指在一段时间内只允许一个用户(进程)访问的设备,大多数低速的I/O设备,如用户终端、打印机等属于这类设备。因为独占设备属于临界资源,所以多个并发进程必须互斥地进行访问。 共享设备:指在一段时间内允许多个进程同时访问的设备。显然,共享设备必须是可寻址的和可随机访问的设备。典型的共享设备是磁盘。共享设备不仅可以获得良好的设备利用率,而且是实现文件系统和数据库系统的物质基础。 虚拟设备:指通过虚拟技术将一台独占设备变换为若干台供多个用户(进程)共享的逻辑设备。

7、一般可以利用假脱机技术(SPOOLing技术)实现虚拟设备。,8.1.3 设备管理的目标和功能,1设备管理的目标 提高设备的利用率。为此,应尽量提高CPU与I/O设备之间的并行操作程度,主要利用的技术有:中断技术、DMA技术、通道技术、缓冲技术。 为用户提供方便、统一的界面。所谓方便,是指用户能独立于具体设备的复杂物理特性之外而方便地使用设备。所谓统一,是指对不同的设备尽量使用统一的操作方式,例如各种字符设备用一种I/O操作方式。这就要求用户操作的是简便的逻辑设备,而具体的I/O物理设备由操作系统去实现,这种性能常常被称为设备的独立性。,8.1.3 设备管理的目标和功能-1,2. 设备管理功能

8、 设备分配。指设备管理程序按照一定的算法把某一个I/O设备、及其相应的设备控制器和通道分配给某一用户(进程),对于未分配到的进程,则插入等待队列中。 缓冲区管理。为了解决CPU与I/O之间速度不匹配的矛盾,在它们之间配置了缓冲区。这样设备管理程序又要负责管理缓冲区的建立、分配和释放。 实现物理I/O设备的操作。对于具有通道的系统,设备管理程序根据用户提出的I/O请求,生成相应的通道程序并提交给通道,然后用专门的通道指令启动通道,对指定的设备进行I/O操作,并能响应通道的中断请求。对于未设置通道的系统,设备管理程序直接驱动设备进行I/O操作。,8.1.3 设备管理的目标和功能-2,虚拟设备。通过

9、SPOOLing技术将独占设备改造成多个逻辑设备,可以实现对独占设备的共享。,8.2 设备控制器,为了便于设计和计算机实现,通常将输入/输出设备分为机械部分和电子部分。机械部分为通常意义上的输入/输出设备本身的硬件组成和结构,如打印机、扫描仪等,电子部分为设备控制器,也称为适配器。输入/输出设备通过设备控制器进入计算机系统,操作系统通过设备控制器管理设备。 8.2.1 设备控制器及其主要功能 接收和识别处理器命令:设备控制器具有命令寄存器和译码器,将处理器的命令接收到命令寄存器中并对命令进行译码。 设备控制:根据接收和译码后的处理器命令对设备采取相应的控制。 数据交换:实现处理器与设备控制器之

10、间、设备控制器与设备之间的数据交换。 识别设备地址:系统中的每一个设备都有一个地址,设备控制器能够识别所控制设备的地址。 了解和报告设备的状态:设备控制器中的控制/状态寄存器能够存储接收到的设备状态信息,并将信息上传给处理器。,8.2.2 设备控制器的组成,图8.5 设备控制器组成,设备控制器实现了处理器与设备之间的数据、控制和地址信息等信息的传输。设备控制器的组成如图8.5所示,设备控制器由控制/状态寄存器、数据寄存器、与处理机接口、与设备接口等构成。,8.2.2 设备控制器的组成-1,一个设备控制器接口连接一台设备,一台设备控制器有多个接口,可以连接多个设备。在设备控制器与设备的接口中存在

11、数据、控制和状态三种类型的信号。设备控制器与设备之间的接口通常是低级的字符接口,设备控制器将字符数据封装成数据块,以更大的数据格式传送到计算机的内存。 在编址方式上存在有内存映像编址和输入/输出独立编址两种形式。 控制器端口和内存进行统一地编址。主机把输入/输出端口看作一个存储单元,对输入/输出设备的读写操作等同于对存储器的操作。优点是不需要专门的输入/输出指令。缺点是对输入/输出端口操作的指令需要占用内存空间。 控制器端口独立分配地址空间。与内存的地址空间没有关系,主机使用专门的输入/输出指令对端口进行操作。独立编址的优点是外部设备不占用内存的地址空间。缺点是对输入/输出端口操作的指令类型少

12、,操作不灵活。Intel 8086/8088,分配给输入/输出端口的地址空间为64K,即:0000H0FFFFH,只能用IN和OUT指令对其进行读写操作。,8.3 I/O控制方式,随着计算机技术的发展,I/O的控制方式也在不断地发展。一般可分为:程序I/O方式、中断方式、DMA方式和通道方式。I/O的控制方式发展的目标是尽量减少主机对I/O控制的干预。 8.3.1 程序轮询方式 在早期的计算机系统中,由于没有中断机构,处理机对I/O设备直接进行控制,采取程序轮询I/O(Programmed I/O)方式或称为忙-等待方式,即在CPU向设备控制器发出一条I/O指令启动I/O设备进行数据传输时,要

13、同时把状态寄存器中的忙/闲标志busy置为1,然后便不断地循环测试busy。当busy=l时,表示该I/O设备尚未输入完一个字(符),CPU应继续对该标志进行测试,直至busy=0,表示该I/O设备已将输入数据送入到I/O控制器的数据寄存器中,于是CPU将从数据寄存器中取出数据,送入内存的指定单元,接着,再启动去读下一个数据,并置busy=l。,8.3.1 程序轮询方式-1,8.3.1 程序轮询方式-2,在程序I/O方式中,由于CPU的速度远远高于I/O设备,导致CPU的绝大部分时间都处于等待I/O设备完成而循环测试之中,造成了CPU的极大浪费。但是它管理简单,在要求不高的场合可以被采用。 8

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

15、。,8.3.2 中断控制(Interrupt-driven I/O)方式-1,8.3.2 中断控制(Interrupt-driven I/O)方式-2,图8.6 个人计算机的部分设备控制器信息,8.3.2 中断控制(Interrupt-driven I/O)方式-3,所以,中断驱动方式在I/O设备输入数据的过程中,无需 CPU干预,可以使CPU与I/O设备并行工作。仅当输完一个数据时,才需 CPU花费极短的时间去进行中断处理。从而大大地提高了整个系统的资源利用率及吞吐量,特别是CPU的利用率。 8.3.3 DMA(Direct Memory Access )控制方式 中断驱动I/O方式虽然大大

16、提高了主机的利用率,但是它以字(节)为单位进行数据传送,每完成一个字(节)的传送,控制器便要向CPU请求一次中断(做保存现场信息,恢复现场等工作),仍然占用了CPU的许多时间。这种方式对于高速的块设备的I/O控制显然是不适合。为了进一步减少CPU对I/O的干预,引入了直接存储器访问(Direct Memory Access)控制方式。该方式的特点是: 1它作为高速的外围设备与内存之间成批的数据交换,但是不对数据再做加工处理,数据传输的基本单位是数据块,I/O操作的类型比较简单。,8.3.3 DMA控制方式-1,2它需要使用一个专门的DMA控制器(DMAC)。DMAC中有控制、状态寄存器、传送字

17、节计数器、内存地址寄存器和数据缓冲寄存器。 3它采用盗窃总线控制权的方法,由DMAC送出内存地址和发出内存读、设备写或设备读、内存写的控制信号来完成内存与设备之间的直接数据传送,而不用CPU的干预。有的DMA传送甚至不经过DMAC的数据缓冲寄存器的再吞吐,传输速率非常高。 4仅在传送一个或多个数据块的开始和结束时,才需 CPU干预,整块数据的传送是在控制器的控制下完成的。 可见,DMA方式较之中断驱动方式,又是成百倍地减少了CPU对 I/O控制的干预,进一步提高了CPU与I/O设备的并行操作程度。,8.3.3 DMA控制方式-2,图8.7 DMA方式,8.3.3 DMA控制方式-3,图8.8

18、DMA控制器组成,DMA控制器由内存地址寄存器(MAR)、数据寄存器(DR)、命令/状态寄存器(CR)、数据计数器(DC)以及中断和控制逻辑等构成,如图8.8所示。,8.3.4 I/O通道控制方式,1I/O通道控制方式的引入 虽然 DMA方式比中断驱动方式已显著地减少了CPU的干预,即由以字(节)为单位的干预减少到以数据块为单位的干预。但是CPU每发出一条I/O指令,也只能去读(或写)一个连续的数据块。而当我们需要一次去读多个离散的数据块且将它们分别传送到不同的内存区域,或者相反时,则需由CPU分别发出多条I/O指令及进行多次中断处理,才能完成。 由于DMA每次只能执行一条I/O指令,不能满足

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

20、般的机器指令不同,在每条指令中包含的信息较多,有操作码、内存地址、计数(读或写数据的字节数)、通道程序结束位P和记录结束标志R。 3.通道类型 由于外围设备的种类较多,且其传输速率相差很大,所以通道也具有多种类型。根据信息交换方式,可以把通道分成以下三种类型: 字节多路通道(Byte Multiplexor Channel) 在这种通道中,通常都含有较多个(8,16,32)非分配型子通道,每一个子通道连接一台I/O设备。这些子通道按时间片轮转方式共享主通道。一个子通道完成一个字节的传送后,立即让出字节多路通道(主通道),给另一个子通道使用。它适用于连接低速或中速设备,如打印机、终端等。,8.3

21、.4 I/O通道控制方式-2,图8.9 字节多路通道,8.3.4 I/O通道控制方式-3,数组选择通道(Block Selector Channel) 这种通道虽然可以连接多台I/O设备,但是它只有一个分配型子通道,在一段时间内只能执行一道通道程序、控制一台设备进行数据传送,其数据传送是按数组方式进行。即当某台设备一旦占用了该通道,就被它独占,直至该设备传送完毕释放该通道为止。可见,它适于连接高速设备(如磁盘机、磁带机),但是这种通道的利用率较低。,图8.10 数组选择通道,8.3.4 I/O通道控制方式-4,数组多路通道(Block Multiplexor Channel) 数组选择通道虽然

22、有很高的传输速率,但它每次只允许一个设备传输数据。数组多路通道是将数组选择通道的传输速率高和字节多路通道的分时并行操作的优点结合起来,形成的一种新的通道。它含有多个非分配型子通道,可以连接多台高、中速的外围设备,其数据传送却是按数组方式进行。所以这种通道既具有很高的数据传输速率,又能获得令人满意的通道利用率。,图8.11 数组多路通道,8.3.4 I/O通道控制方式-5,3通道的工作过程 通道中的运算控制部件有:用于记录通道程序在内存地址的通道地址字CAW、用于保存正在执行的通道指令的通道命令字CCW、用于存放通道执行后返回结果的通道状态字CSW、用于存放传输数据的通道数据字CDW。 通道有专

23、门的通道指令,这些指令可以完成空操作、读操作、写操作、控制、转移操作,用这些指令可以编写通道程序,并在通道中执行程序。命令格式一般包括操作码、数据传输内存地址、特征位、计数器。 通道输入/输出的工作过程如下: (1)当处理器执行用户程序中遇到输入/输出请求时,根据请求生成通道程序放入内存(也可事先编好放入内存),并将该通道程序的首地址放入通道的CAW中。 (2)处理器执行“启动输入/输出”指令,并启动通道工作。当通道接收到“启动输入/输出”指令后,从通道的CAW中取出通道程序的首地址,根据首地址取出第一条指令放入通道的CCW中,并向处理器发应答信号。此时处理器可继续执行其他程序,而通道则开始执

24、行通道程序。,8.3.4 I/O通道控制方式-6,(3)通道程序完成输入/输出,启动输入/输出设备,执行完成。 (4)如果还有下一条指令,则继续执行,否则输入/输出完成。 (5)当通道传输完最后一条指令时,向处理器发输入/输出中断,通道停止工作。 (6)处理器接收中断信号,从通道的CSW中取得有关信息,决定下一步做什么。 4具有通道的计算机系统 在计算机系统中,一个处理器可以连接若干个通道,一个通道可以连接若干个设备控制器,一个设备控制器可以连接若干个设备。 处理器通过执行输入、输出指令实现对通道的控制,通道通过执行通道指令实现对设备控制器的控制,设备控制器发出读写和管理操作实施对设备的控制和

25、完成输入、输出。,8.3.4 I/O通道控制方式-7,在一般的主机系统中,单通道输入/输出的可靠性不高,为了增加系统的可靠性,可采用多通道,并在通道和设备控制器之间采用交叉连接,如图8.12所示。,图8.12 交叉连接的系统,8.3.4 I/O通道控制方式-8,IBM 390计算机系统的输入/输出系统采用的是通道子系统,如图8.13所示。通道路径可以分为并行通道路径和串行通道路径,右边部分为串行通道路径,左边部分则为并发通道路径,分别连接不同速度的输入/输出设备。,图8.13 IBM 390系统,8.4 缓冲( Buffering )技术,目前为了解决CPU与I/O设备间速度不匹配的矛盾,提高

26、的I/O速度和设备利用率,在所有的I/O设备与处理机(内存)之间,都使用了缓冲区来交换数据。所以OS必须组织和管理好这些缓冲区。 8.4.1 缓冲的引入 1.改善CPU与I/O设备间速度不匹配的矛盾 例如一个程序,它时而进行长时间的计算而没有输出,时而又阵发性把输出送到打印机。由于打印机的速度跟不上CPU,而使得CPU长时间的等待。如果设置了缓冲区,程序输出的数据先送到缓冲区暂存,然后由打印机慢慢地输出。这时,CPU不必等待,可以继续执行程序。实现了CPU与I/O设备之间的并行工作。事实上,凡在数据的到达速率与其离去速率不同的地方,都可设置缓冲,以缓和它们之间速度不匹配的矛盾。众所周知,通常的

27、程序都是时而计算,时而输出的。,8.4.1 缓冲的引入-1,2.可以减少对 CPU的中断频率,放宽对中断响应时间的限制 如果I/O操作每传送一个字节就要产生一次中断,那么设置了n个字节的缓冲区后,则可以等到缓冲区满才产生中断,这样中断次数就减少到1/n,而且中断响应的时间也可以相应的放宽。 3提高 CPU和 IO设备之间的并行性 缓冲的引入可显著提高 CPU和设备的并行操作程度,提高系统的吞吐量和设备的利用率。,8.4.2单缓冲( Single Buffer ),每当一个用户进程发出一个I/O请求时,OS便在主存中为之分配一个缓冲区。例如,CPU要从磁盘上读一块数据进行计算,先从磁盘把一块数据

28、读入到缓冲区中,然后由OS将缓冲区的数据传送到用户区,最后由CPU对这一块数据进行计算,可见第一步和最后一步是可以并行执行的,这样就提高了CPU和外设的利用率。但是对缓冲区中数据的输入和提取是串行工作的。 (如下图所示) 操作系统 用户进程 输入 传送 I/O设备,8.4.2单缓冲( Single Buffer )-1,平均每批数据的处理(输入、传输、计算)时间=max(输入时间,计算时间)+传输时间,8.4.3双缓冲( Double Buffer ),双缓冲工作方式基本方法是在设备输入时,先将数据输入到缓冲区A,装满后便转向缓冲区B。此时OS可以从缓冲区A中提取数据传送到用户区,最后由CPU

29、对数据进行计算。(如下图所示) 操作系统 用户进程 C 输入T 传送M I/O设备,平均每批数据的处理(输入、传输、计算)时间=max(输入时间,计算时间+传输时间),A输入,传输,计算,B输入,8.4.4多缓冲( Circular Buffer ),双缓冲可以实现对缓冲区中数据的输入和提取,与CPU的计算,三者并行工作。所以双缓冲进一步加快了I/O的速度,提高了设备的利用率。 当对缓冲区中数据的输入和提取的速度基本相匹配时,采用双缓冲可使两者并行工作,获得较好的效果。但是如果两者的速度相差甚远时,双缓冲的效果就不够理想了。如果增加缓冲区的个数,情况就会有所改善。,8.4.4多缓冲( Circ

30、ular Buffer )-1,我们可以将多个缓冲区组织成循环队列的形式(如下图所示)。例如对于用作输入的循环缓冲区,通常提供给输入进程和计算进程使用,输入进程不断向空缓冲区中输入数据,计算进程则从满缓冲区中提取数据用于计算。 操作系统 用户进程 输入 传送 I/O设备,8.4.4多缓冲( Circular Buffer )-2,循环缓冲的组织,1空,2空,3空,4满,5满,6满,空缓冲队列头指针E,有数据缓冲队列头指针F,8.4.4多缓冲( Circular Buffer )-3,进程同步 (1)无空缓冲:E+1=F,输入进程阻塞,计算进程在消耗一个缓冲后唤醒它。 (2)无数据:E=F,计算

31、进程阻塞,输入进程在装满一个缓冲后唤醒它。 缓冲使用 设置两个过程 (1)GetDatabuf:取有数据的缓冲,在取之前要检查有无数据(见进程同步),F=(F+1) mod N. (2) GetEmptybuf:取空缓冲,在取之前要检查有无空缓冲(见进程同步),E=(E+1) mod N.,8.4.5缓冲池,当系统配置较多的设备时,使用专用缓冲区就要消耗大量的内存空间,且其利用率不高。为了提高缓冲区的利用率,目前广泛使用公用缓冲池,池中的缓冲区可供多个进程共享。 对于同时用于输入/输出的公用缓冲池,至少含有三种类型的缓冲区:空缓冲区、装满输入数据的缓冲区和装满输出数据的缓冲区。为了管理上的方便

32、,可将相同类型的缓冲区链成一个队列,于是就形成三个队列:空缓冲区队列、输入缓冲区队列和输出缓冲区队列。 另外还应具有四种工作缓冲区:用于收容输入数据的工作缓冲区(hin);用于提取输入数据的工作缓冲区(sin); 用于收容输出数据的工作缓冲区(hout);用于提取输出数据的工作缓冲区(sout)。可见,缓冲区工作在收容输入、提取输入、收容输出和提取输出四种工作方式下(如下图5所示)。,申请和归还缓冲区 (1)getbuf(type) (2) putbuf(type,bufnum) begin begin P(RS(type); P(MS(type); P(MS(type); addbuf(ty

33、pe,bufnum); takebuf(type); V(MS(type); V(MS(type) V(RS(type) end end,8.4.5缓冲池-1,其中,RS(type) 是为每种缓冲队列设置的同步信号量,MS(type)是为每种缓冲队列设置的互斥信号量,8.5 输入/输出软件,I/O软件的分层,输入/输出软件是实现输入/输出管理的软件部分。输入/输出软件设计目标是改善输入/输出设备的效率,实现统一标准的输入/输出设备管理方式。目前,输入/输出软件设计最常用的方法是分层设计,分为四层,如下图所示。,8.5.1 中断处理程序,在设备控制器控制下,I/O设备完成了I/O操作后,控制器(

34、或通道)便向CPU发出一中断请求,CPU响应后便转向中断处理程序,中断处理程序大致包含以下几步: 当中断处理程序开始执行时,都必须去唤醒阻塞的驱动(程序)进程。在采用信号量机制时,可通过执行V操作,将处于阻塞状态的驱动(程序)进程唤醒。 保护被中断进程的CPU现场。 分析中断原因,转入相应的设备中断处理程序。 进程中断处理,判别此次I/O完成是正常结束中断还是异常结束中断,分别作相应处理。 恢复被中断进程或由调度程序选中的进程的CPU的现场。 返回被中断的进程,或进入新选中的进程继续运行。 在UNIX中将以上对各类设备处理相同的部分集中起来,形成中断总控程序,每当要进行中断处理时,都要首先进入

35、中断总控程序,再按需要转入不同的设备处理程序。,8.5.2 设备驱动程序,设备驱动程序通常又称为设备处理程序,它是输入/输出进程与设备控制器之间的通信程序,简称为设备驱动进程。它的主要任务是接收上层软件发来的抽象要求并将设备控制器发来的信号传送给上层软件。 1设备驱动程序的功能 设备驱动程序包括所有与设备相关的代码,因此,每个设备都有自己专用的驱动程序。 设备驱动程序的主要功能如下: 将上层软件传送来的用户作业的逻辑输入/输出请求转换为设备的具体要求。 验证用户作业输入/输出请求的合法性,了解输入/输出设备的状态,传递有关参数,设置设备的工作方式。 发出输入/输出命令,启动分配的输入/输出设备

36、工作,执行指定的输入/输出操作。,8.5.2 设备驱动程序-1, 及时响应设备控制器或通道发来的中断请求,根据中断类型调用相应的中断处理程序进行处理。 如果计算机系统设置有通道,设备驱动程序还应能够根据用户作业的输入/输出请求,自动地构成通道程序。 设备出错处理 2设备驱动程序的特点 设备驱动程序是请求输入/输出的进程与设备控制器之间的一个通信程序。它将进程的输入/输出请求传送给设备控制器,把设备控制器中所记录的设备状态、输入/输出操作完成情况传送给请求输入/输出的进程。 设备驱动程序与输入/输出控制方式紧密相关。常用的设备控制方式是中断和DMA方式。 设备驱动程序针对一类具体的设备工作,与设

37、备硬件紧密相关,通常情况下,设备驱动程序需要用汇编语言书写,目前有很多驱动程序的基本部分已经固化在ROM中。,8.5.2 设备驱动程序-2,3设备驱动程序的处理过程 将用户和上层软件对设备控制的抽象要求转换成对设备的具体要求,如对抽象要求的盘块号转换为磁盘的盘面、磁道及扇区。 检查I/O请求的合理性。 读出和检查设备的状态,确保设备处于就绪态。 传送必要的参数,如传送的字节数,数据在主存的首址等。 工作方式的设置。 启动I/O设备,并检查启动是否成功,如成功则将控制返回给I/O控制系统,在I/O设备忙于传送数据时,该用户进程把自己阻塞,直至中断到来才将它唤醒,而CPU可干别的事。,8.5.2

38、设备驱动程序-3,4设备出错处理 设备出错处理由设备驱动程序完成。 在设备使用上,大多数的设备出错情况,只有驱动程序知道该如何处理。一般来讲,设备驱动程序会根据使用出错的情况不同,采用不同的处理方法。 如果发生的错误很小,不影响设备的正常使用,设备驱动程序会忽略错误。 如果发生的错误不能忽略,则设备驱动程序会采取重试的方法或报警的方法。如何报警、如何处理错误则与操作系统无关,可能需要人工解决。 例如,使用打印机时出错,打印机驱动程序通过系统通知用户重试确认。如果打印机缺纸出错,打印机驱动程序通过系统通知用户处理,处理好后可继续运行。使用磁盘时由于位示图等关键信息出错,则磁盘驱动程序通过系统打印

39、出错误信息并终止执行,驱动程序自身不能处理。,8.5.3 与设备无关的操作系统软件,1设备无关的软件定义 设备驱动程序与设备之间存在着紧密关系,即设备驱动程序不能独立于设备,而最上层的用户级输入/输出软件却要求用户程序对设备的使用独立于具体使用的物理设备,实现设备独立性。因此,在设备驱动程序与用户级输入/输出软件之间需要再加上一层软件,这层软件是与设备无关的软件,也称为设备独立性软件。 2设备的逻辑名与物理名之间的映射 正如用户程序中要使用逻辑地址而不使用物理地址一样,在用户程序中使用设备的逻辑名而不使用设备的物理名。 设备的逻辑名是系统中预先设计的统一名称,不依赖于设备,可以是一个简单的字符

40、串或一个整数,应用在与设备有关的所有软件模块中。设备的物理名是系统提供的标准名称,是永久的、不可改变的。设备驱动程序需要将设备的逻辑名映射为物理名,并按照设备的逻辑名进行设备的分配和回收。,8.5.3 与设备无关的操作系统软件-1,逻辑设备表(logical unit table)实现了设备的逻辑名到物理名的映射。 对于单用户单进程系统,整个系统设置一个逻辑设备表。由于系统中所有进程的设备分配情况都记录在同一表中,不允许具有相同的逻辑设备名。 对于多用户多进程系统,系统为每个用户设置一个逻辑设备表。每当用户登录时,便为用户建立一个进程,同时也为之建立一个逻辑设备表,并将该表放入进程的进程控制块

41、中,只需要查询进程控制块即可实现逻辑名到物理名的映射。 在逻辑设备表中包含有逻辑设备名、物理设备名和设备驱动程序的入口地址等信息。当进程用逻辑设备名来请求分配输入/输出设备时,系统为它分配相应的物理设备,并在逻辑设备表上建立一个表目,写上应用程序中使用的逻辑设备名和系统分配的物理设备名,以及该设备的驱动程序入口地址。 一个用户程序在使用磁盘、打印机等设备时,无需因为每一种设备类型的变化而修改程序,操作系统可以根据当时设备的配置情况自由分配适当类型的设备,一台设备不能提供使用,可以用相同种类的设备来提供。,8.5.3 与设备无关的操作系统软件-2,3设备独立性软件为用户使用设备提供了统一操作,通

42、过限制操作的权限达到保护设备的目的 有了设备独立性软件,无论何种设备,都可以向用户输入/输出程序层提供统一的接口。对所有的设备,用户的操作都是相同的,都通过read实现读操作,从输入设备读取数据。通过write实现写操作,将数据输出到输出设备。系统对每个设备设置读写权限,最终实现保护设备的目的。 4实现设备独立性软件的优点 实现设备独立性软件具有如下优点。 使得设备分配时具有灵活性,提高了设备的利用率 易于实现输入/输出重定向,提高系统的可适用性 用于输入/输出操作的设备可以更换,即重定向,而不必改变应用程序。,8.5.4 用户级输入/输出软件,大多数的输入/输出软件都在操作系统核心中实现,只

43、有与用户程序链接在一起的库函数以及运行在操作系统核心之外的其它程序才在用户层实现。 1库文件 对输入/输出系统进行调用的系统函数属于用户级,如对设备的read、write操作。 2spooling程序技术 (1)spooling程序技术定义 脱机输入/输出是通过外围控制机实现信息的输入/输出,输入/输出不需要主机的参与,使得主机的处理与输入/输出过程并行进行,提高了系统的效率,特别是处理器的效率。,8.5.4 用户级输入/输出软件-1,随着计算机处理速度的提高,特别是多道程序的引入,外围控制机的输入/输出控制功能可以用程序来模拟,用程序来替代外围控制机。模拟输入程序将大量需要处理的信息预先输入

44、到磁盘中暂存,实现了“预输入”,当用户作业需要输入信息时则直接从磁盘中输入。同样,当用户作业需要输出信息时,会暂时将信息保存到磁盘中,待作业完成后,模拟输出程序再将磁盘中的输出信息输出到输出设备,实现了“缓输出”。这样的输入/输出是在主机的控制下,实现的脱机输入/输出,称为spooling(simultaneaus periphernal operations on-line),也称为假脱机。,8.5.4 用户级输入/输出软件-2,(2)spooling系统的组成,8.5.4 用户级输入/输出软件-3,spooling系统主要包括如下四个部分: 输入井和输出井 输入缓冲区和输出缓冲区 预输入进

45、程SPI和缓输出进程SPO 井管理程序 在作业执行过程中,进程如果请求启动某台输入/输出设备操作,操作系统得到该请求并调出井管理程序,控制从相应的输入井读取数据或将信息输出到输出井。输入井中的信息被作业取走后,输入井应该归还。同样,如果输出井中的信息被送入到输出缓冲区后,输出井也应该归还。操作系统通过预输入表和缓输出表管理输入作业和输出作业。表中有作业名、作业状态、文件名、设备类、数据起始位置、数据当前位置等信息。当输入井或输出井删除时,作业信息也从表中删除。 井管理程序的主要工作就是管理预输入表和缓输出表及回收输入井和输出井。,8.5.4 用户级输入/输出软件-4,(3)应用spooling

46、技术实现共享打印机 打印机属于独享设备,但利用spooling技术,可将它改造为一台可供多个用户共享的设备,从而提高设备的利用率,方便用户的使用。 当用户进程申请打印输出时,spooling系统同意为进程打印输出,但并不真正分配打印机给该进程,而只为该进程做了两件事。 输出进程在输出井中为之申请一空闲盘块区,并将要打印的数据送入其中; 输出进程再为用户进程请求一张空白的缓输出表,并将用户的打印要求填入表中,如果还有作业打印输出,系统仍可以接收请求并将其写入表中。 打印机可能使用时间非常长,在用户使用期间,其他用户无法打印。为解决该问题,大多数操作系统都为打印机创建了一个特殊的守护进程,由守护进

47、程从输出井中取出用户作业进行打印。而不需要用户进程参与打印,这样,用户进程在将打印数据送入输出井之后不需要等待打印,继续运行。,8.5.4 用户级输入/输出软件(续),(4)spooling技术的特点 提高了输入/输出速度 如同脱机输入输出一样,spooling提高了输入/输出速度,缓和了处理器与低速输入/输出设备之间速度不匹配的矛盾。 将独占设备改造为共享设备 通过输入井和输出井实现了独占设备向共享设备的转变。 实现了虚拟设备功能 实现了将独占设备变换为若干个对应的逻辑设备。,8.6 设备的分配和回收,在多道程序环境下,设备必须由系统分配。每当进程向系统提出I/O请求时,设备分配程序按照一定

48、的策略,把其所需的设备及其有关资源(如缓冲区、控制器和通道)分配给该进程。在分配设备时还必须考虑系统的安全性,避免发生死锁现象。 8.6.1设备分配原则 1根据设备的固有属性而采取的策略 独享方式:独享方式是指将一个设备分配给某进程后,便一直由它独占,直至该进程完成或释放该设备为止,系统才能将该设备分配给其它进程使用。这种分配方式是对独占设备采用的分配策略。它不仅往往造成设备利用率低,而且还会引起系统死锁。,8.6.1设备分配原则-1,共享方式 共享方式是指将共享设备(磁盘)同时分配给多个进程使用。但是这些进程对设备的访问需进行合理的调度。 虚拟方式 虚拟方式是指通过高速的共享设备,把一台慢速

49、的以独占方式工作的物理设备改造成若干台虚拟的同类逻辑设备,这就需要引入SPOOLing技术。虚拟设备属于逻辑设备。 2设备分配算法(与进程的调度算法相似) 先来先服务:当多个进程同时向某一设备提出I/O请求时,该算法就根据对该设备提出请求的先后次序将这些进程排列成一个设备请求队列,设备分配程序把设备首先分配给队首进程。 优先级高者优先:对优先权高的进程所提出的I/O请求赋予高优先权,在形成设备队列时,将优先级高的进程排在设备队列前面,先得到分配。而对于优先权相同的I/O请求,则按先来先服务原则排队分配。,8.6.1设备分配原则-2,3设备分配中的安全性 安全分配方式 每当进程发出一个I/O请求后,便进入阻塞状态,直到其I/O操作完成时才被唤醒。当它运行时不保持任何设备资源,打破了产生死锁一个必要条件“请求和保持”,所以这种分配方式是安全的。但是这种分配算法使得CPU与I/O设备

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1