680 likes | 836 Views
第5章 设备管理. 5.1 设备管理概述 5.2 缓冲管理 5.3 I/O 控制方式 5.4 中断技术 5.5 设备的分配 5.6 设备处理 5.7 终端管理和时钟管理. 教学提示:由于存在各种限制,一个计算机系统配置的设备总是有限的,无法满足各种用户程序的实际需要,特别是在多道程序运行环境中允许多个作业并行处理,设备需求量比单道程序运行时要多得多。为了有效地利用设备资源,同时也为用户程序使用设备提供最大方便,由操作系统对系统中所有设备进行统一的调度和管理是极为重要的。设备管理是操作系统的重要组成部分之一。
E N D
第5章 设备管理 • 5.1 设备管理概述 • 5.2 缓冲管理 • 5.3 I/O控制方式 • 5.4 中断技术 • 5.5 设备的分配 • 5.6 设备处理 • 5.7 终端管理和时钟管理
教学提示:由于存在各种限制,一个计算机系统配置的设备总是有限的,无法满足各种用户程序的实际需要,特别是在多道程序运行环境中允许多个作业并行处理,设备需求量比单道程序运行时要多得多。为了有效地利用设备资源,同时也为用户程序使用设备提供最大方便,由操作系统对系统中所有设备进行统一的调度和管理是极为重要的。设备管理是操作系统的重要组成部分之一。教学提示:由于存在各种限制,一个计算机系统配置的设备总是有限的,无法满足各种用户程序的实际需要,特别是在多道程序运行环境中允许多个作业并行处理,设备需求量比单道程序运行时要多得多。为了有效地利用设备资源,同时也为用户程序使用设备提供最大方便,由操作系统对系统中所有设备进行统一的调度和管理是极为重要的。设备管理是操作系统的重要组成部分之一。 • 教学目标:本章将主要讨论设备管理的基本概念,包括中断技术、缓冲技术以及设备分配和控制等。
5.1 设备管理概述 • 5.1.1 I/O系统硬件结构 • 5.1.2 外设的分类 • 5.1.3 设备管理的目标和功能 • 5.1.4 设备管理和文件管理的关系
5.1 设备管理概述 • 在计算机系统中,设备管理是指对数据传输控制和对除中央处理器和主存储器之外的所有其他设备的管理。由于I/O设备不仅种类繁多,而且它们的特性和操作方式,往往相差甚大,这就使设备管理成为操作系统中最繁杂且与硬件紧密相关的部分。 • 除中央处理器和主存储器之外的所有其他设备称为外部设备。
磁盘驱动器 打印机 CPU 存储器 打印机 控制器 L(outq) 其他 控制器 L(outq) … 系统总线 5.1.1 I/O系统硬件结构 • 对于不同规模的计算机系统,其I/O系统的硬件结构也有所差异。通常可分为两大类:微型机I/O系统和主机I/O系统。 • 1. 微型机I/O系统 图5.1 总线型I/O系统结构
设备 设备 I/O通道1 控制器 计算机 控制器 I/O通道2 控制器 控制器 2. 主机I/O系统 图5.2 具有通道的I/O系统
5.1.2 外设的分类 • 按操作特性分类 • 存储设备 • 输入/输出(I/O)设备。 • 按传输的信息特点分类 • 字符设备 • 块设备。
4.按传输速率分类 • 低速设备:指传输速率为每秒钟几个字节到数百个字节的设备。典型的设备有键盘、鼠标、语音的输入等; • 中速设备:指传输速率在每秒钟数千个字节至数十千个字节的设备。典型的设备有行式打印机、激光打印机等; • 高速设备:指传输速率在数百千个字节至数兆字节的设备。典型的设备有磁带机、磁盘机、光盘机等。
5.按资源分配的角度分类 • 独占设备:指在一段时间内只允许一个用户(进程)访问的设备,如用户终端、打印机等属于这类设备。因为独占设备属于临界资源,所以多个并发进程必须互斥地进行访问。 • 共享设备:指在一段时间内允许多个进程同时访问的设备。典型的共享设备是磁盘。共享设备是实现文件系统和数据库系统的物质基础。 • 虚拟设备:指通过虚拟技术将一台独占设备变换为若干台供多个用户(进程)共享的逻辑设备。一般可以利用假脱机技术(SPOOLing技术)实现虚拟设备。
5.1.3 设备管理的目标和功能 • 设备管理的目标 • 提高设备的利用率:为提高设备的利用率,除合理分配和使用外部设备外,应努力提高设备与CPU的并行程度,与此相关的技术有通道技术、中断技术和缓冲技术。 • 设备独立性 • 字符编码的独立性:各外部设备的字符编码方式会有所不同,为减轻用户编程时的负担应使用统一内部字符码。这就要求设备管理中应有适应于各设备的字符编码的变换机构。 • 设备处理的一致性
设备管理的目标—设备独立性 • 基本含义是:将用户所使用的设备与机器中进行IO操作的物理设备分离开来,用户不关心具体的物理设备,按照习惯使用一个逻辑名称。 应用程序独立于具体使用的物理设备。 • 为了实现设备独立性而引入了逻辑设备和物理设备这两个概念。在应用程序中, 使用逻辑设备名称来请求使用某类设备;而系统在实际执行时, 还必须使用物理设备名称。因此,系统须具有将逻辑设备名称转换为某物理设备名称的功能,这非常类似于存储器管理中所介绍的逻辑地址和物理地址的概念。
设备独立性应用举例 • 例如系统拥有A、B两台卡片输入机,现有作业J2申请一台卡片输入机,如果它指定使用A,那么若是作业J1已经占用A或者设备A坏了,虽然系统还有同类设备B是好的且未被占用,但也不能接受作业J2,显然这样做很不合理。为了解决这一问题,通常用户不指定特定的设备,而指定逻辑设备,使得用户作业和物理设备独立开来,再通过其它途径建立逻辑设备和物理设备之间的对应关系,我们称这种特性为“设备独立性”。具有设备独立性的系统中,用户编写程序时使用的设备与实际使用的设备无关,亦即逻辑设备名是用户命名的,可以更改,物理设备是系统规定的,是不可更改的。设备管理的功能之一就是把逻辑设备名转换成物理设备名。
设备独立性的类型 • 设备独立性有以下两种类型。 • (1) 独立于同类设备的具体设备号。如系统中有相同类型的多个设备,则不论使用其中的哪个设备都行。即与给定设备类型中的哪一台设备供其使用无关。 • (2) 独立于设备类型。如程序要求输入信息,则不论从什么设备上输入均可,对输出也一样,即用户程序与设备类型无关。
设备处理的一致性 • 外部设备种类繁多且其特性各不相同,差别主要有以下几点: • (1) 速度。如键盘输入和光盘输入速度相差甚远。 • (2) 传送单位。例如传递信息的单位分别是字符或者块 • (3) 允许的操作。如磁带能反绕、卡片机不能倒退以及磁盘能随机读写等。 • (4) 出错条件。如奇偶校验错误及打印机无纸等。 • 为了简便和避免出错,应用统一的方法来处理所有的设备,将设备的特性与处理它们的程序分开,使之只与设备本身紧密联系。这样,可使某一类设备共用一个设备处理程序。
2. 设备管理的功能 • (1)监视系统中所有设备的状态(设备的状态保存在设备控制块DCB中)。 存放要求使用该设备的队列的首指针。
(2)设备分配。 • (3)设备控制是设备管理的另一功能,它包括设备驱动和设备中断处理,具体的工作过程是在设备处理的程序中发出驱动某设备工作的I/O指令后,再执行相应的中断处理。
5.2 缓冲管理 • 5.2.1 缓冲的引入 • 5.2.2 单缓冲与双缓冲 • 5.2.3 环形缓冲 • 5.2.4 缓冲池
5.2.1 缓冲的引入 • 引入缓冲的主要目的有以下几点。 • 1.缓和处理机和I/O设备间速度不匹配的矛盾 • 2.减少对CPU的中断次数 • 3.提高CPU和I/O设备之间的并行性
5.2.2单缓冲与双缓冲 • 单缓冲(主存中分配,某一时刻只能放输入的或者是输出的数据,不能同时存放,不允许多进程同时访问它,可看做临界资源) • 在单缓冲形式下,数据输入的情形是这样的:当进程要求数据输入时,操作系统先控制外设将数据送往缓冲区存放,然后进程从缓冲区中取出数据继续运行。采用单缓冲方式可以缓和CPU和外设速度之间的矛盾,同时也可以使CPU和外设并行工作,但是它不能使输入设备和输出设备之间通过单缓冲达到并行操作。
2.双缓冲 • 解决外设之间并行工作的最简单的办法是设置双缓冲,为输入或输出操作设置两个缓冲区buffer1和buffer2。 • 双缓冲方式和单缓冲方式相比,虽然双缓冲方式能进一步提高CPU和外设的并行程度,并能使输入设备和输出设备并行工作,但是在实际系统中很少采用这一方式,这是因为在计算机系统中的外设很多,又有大量的输入和输出,同时双缓冲很难匹配设备和CPU的处理速度。因此现代计算机系统中一般使用环形缓冲或缓冲池结构。
5.2.3 环形缓冲 • 环形缓冲技术是在主存中分配一组大小相等的存储区作为缓冲区,并将这些缓冲区链接起来,每个缓冲区中有一个指向下一个缓冲区的指针,最后一个缓冲区的指针指向第一个缓冲区,这样n个缓冲区就成了一个环形。此外,系统中有个缓冲区链首指针指向第一个缓冲区。环形缓冲区结构如图5.3所示。
初始时Start=In=Out 在环形缓冲这一方案中,为保证并行操作必须有这样一种约束条件,即In≠Out。在一般情形下,Out<In。当Out即将赶上In时,进程从缓冲区提取数据这一操作必须等待,当In即将赶上Out时,从设备输入数据这一操作也必须等待。 图5.3 环形缓冲区结构
5.2.4 缓冲池 • 对于同时用于输入/输出的公用缓冲池,至少含有三种类型的缓冲区:空缓冲区、装满输入数据的缓冲区和装满输出数据的缓冲区。通常将相同类型的缓冲区链成一个队列,可以存在三个队列:空缓冲区队列emq、输入缓冲区队列inq和输出缓冲区队列outq
还有四种工作缓冲区: • ⑴用于收容输入数据的工作缓冲区(hin); • ⑵用于提取输入数据的工作缓冲区(sin); • ⑶用于收容输出数据的工作缓冲区(hout); • ⑷用于提取输出数据的工作缓冲区(sout)。 • 可见,缓冲区工作在收容输入、提取输入、收容输出和提取输出四种工作方式下(如下图所示)。
hin sin sout hout 图5.5 缓冲池的工作缓冲区
缓冲池的工作方式 • 缓冲区可以在收容输入、提取输入、收容输出和提取输出4种方式下工作。 • 收容输入。当输入进程需要数据时,系统从emq队列的队首摘下一空缓冲区,把它作为收容工作缓冲区hin。将数据输入其中,然后再将它挂在队列inq的末尾。 • 提取输入。当计算进程需要输入数据进行计算时,系统从输入队列队首取得一缓冲区作为提取输入工作缓冲区sin,计算进程从中提取数据,当进程用完该缓冲区数据后,再将它挂在空缓冲队列emq的末尾。
缓冲池的工作方式 • 收容输出。当计算进程需要输出数据时,系统从空缓冲队列emq的队首取得一空缓冲区,将它作为收容输出工作缓冲区hout。hout输出数据后,再将它挂在队列outq的末尾。 • 提取输出。当要进行输出操作时,从输出队列outq的队首取得一缓冲区,作为提取输出工作缓冲区sout。当数据提取完毕后,再将该缓冲区挂在空缓冲队列emq的末尾。
5.3 I/O控制方式 • 5.3.1 程序直接控制方式 • 5.3.2 中断控制方式 • 5.3.3 DMA方式 • 5.3.4 通道控制方式
5.3.1 程序直接控制方式 • 程序直接控制方式是指由程序直接控制内存或CPU和外围设备之间进行信息传送的方式。通常又称为“忙—等”方式或循环测试方式。 • 在数据传送过程中,必须要使用设备中的控制寄存器,它接收CPU的命令,并控制I/O设备进行实际的操作。 • 简而言之,使用程序直接控制方式就是CPU要一直在执行检测程序,只要没得到自己需要的结果,就不停地循环检测,直到得到满意的结果为止,在此期间CPU不能做其他任何工作
例如要输出数据时的工作过程如下 • (1)把一个启动位为“1”的控制字写入该设备的控制状态寄存器。 • (2)将需输出数据送到数据缓冲寄存器。 • (3)测试控制状态寄存中的“完成位”,若为0,转(2),否则转(4)。 • (4)输出设备将数据缓冲寄存器中的数据取走进行实际的输出。
5.3.2 中断控制方式 • 概括而言,中断控制方式,就是CPU在忙着执行一些指令,外设在忙着输入或者输出数据,当外设完成工作之后,就向CPU发出一个中断请求,告知CPU现在可以送来新的数据或者从这里将数据取走了 • 若是同时输入或输出的设备太多,会导致CPU要不停地进行中断处理,无法完成自己的工作,所以要引入DMA控制方式
5.3.3 DMA方式 • DMA方式又称直接存储器访问(Direct Memory Access)方式。其基本思想是在外设和主存之间开辟直接的数据交换通路。 • DMA方式的特点是: • 数据传送的基本单位是数据块。 • 所传送的数据是从设备送内存,或者相反。 • 仅在传送一个或多个数据块的开始和结束时,才需中断CPU,请求干预,整块数据的传送是在DMA控制器控制下完成的。
5.3.4 通道控制方式 • 通道控制方式与DMA方式相类似,也是一种内存和设备直接进行数据交换的方式。与DMA方式不同的是,在通道控制方式中,数据传送方向、存放数据的内存始址及传送的数据块长度均由一个专门负责输入/输出的硬件——通道来控制。另外,DMA方式每台设备至少需要一个DMA控制器,而通道控制方式中,一个通道可控制多台设备与内存进行数据交换。
通道是一个独立于CPU的专门负责输入输出控制的处理机,它和设备控制器一起控制设备与内存直接进行数据交换。通道是一个独立于CPU的专门负责输入输出控制的处理机,它和设备控制器一起控制设备与内存直接进行数据交换。 • 2.通道程序: 通道是通过执行通道程序,并与设备控制器来共同实现对I/O设备的控制。通道程序是由一系列的通道指令(或称为通道命令)所构成。通道指令与一般的机器指令不同,在每条指令中包含的信息较多,有操作码、内存地址、计数(读或写数据的字节数)、通道程序结束位R0和记录结束标志R1.
通道指令的内容: • 每条通道指令应包含以下的内容: • 操作码:它规定指令所执行的操作,如读、写等。 • 内存地址:标明数据传送时内存的首址。 • 计数:表示传送数据的字节数。 • 通道程序结束位R0,表示通道程序是否结束。 • 记录结束标志R1,表示所处理的记录是否结束。
操作 R0 R1 计数 内存地址 WRITE 0 0 80 1420 WRITE 0 1 170 2120 • 下面给出一个由二条通道指令所构成的简单程序。 • 这两条指令是将处于不同内存地址的两个数据块写成一个记录。
通道控制方式的数据过程如下: • 当进程要求设备输入时,CPU发指令指明I/O操作、设备号和对应通道。 • 对应通道收到CPU发来的启动指令后,读出内存中的通道指令程序、设置对应设备的控制状态寄存器的初值。 • 设备按通道指令的要求,把数据送往内存指定区域。 • 若传送结束,I/O控制器通过中断请求线发中断信号请求CPU做中断处理。 • 中断处理结束后,CPU返回到被中断进程处继续执行。 • 当进程调度程序选中这个已得到数据的进程后,才能进行加工处理。
5.4 中断技术 • 5.4.1 中断的基本概念 • 5.4.2 中断的分类 • 5.4.3 中断的处理过程
5.4.1 中断的基本概念 • 中断(Interrupt)是指在计算机执行期间,系统内发生任何非寻常的或非预期的急需处理事件,使得CPU暂时中断当前正在执行的程序而转去执行相应的事件处理程序,待处理完毕后又返回原来被中断处继续执行或调度新的进程执行的过程。引起中断发生的事件被称为中断源。中断源向CPU发出的请求中断处理信号称为中断请求,而CPU收到中断请求后转去执行相应的事件处理程序称为中断响应。
5.4.2 中断的分类 • 根据中断源产生的条件,可把中断分为外中断和内中断。 • 外中断是指来自处理机和内存外部的中断,外中断在狭义上一般被称为中断。 • 内中断主要指在处理机和内存内部产生的中断。内中断一般称为陷入或异常。它包括程序运算所引起的各种错误,如地址非法、校验错、页面失效、存取访问控制错、算术操作溢出、数据格式非法、除数为零、非法指令、用户程序执行特权指令、分式系统中的时间片中断以及从用户态到核心态的切换等都是陷入的例子。
5.4.3 中断的处理过程 • I/O设备完成了I/O操作后,控制器便向CPU发出中断请求,CPU进行中断处理的过程如下。 • 唤醒被阻塞的驱动程序进程。无论是什么类型的中断,当中断处理程序开始执行时,都必须唤醒阻塞的驱动程序进程。 • 保护被中断进程的现场。将被中断进程的现场信息保留在相应的中断栈中。 • 转入中断处理程序
进行中断处理。执行相应的中断处理程序进行中断处理。如果是正常完成中断,驱动程序进行中断处理;如果是异常结束,则根据发生异常的原因做相应的处理。进行中断处理。执行相应的中断处理程序进行中断处理。如果是正常完成中断,驱动程序进行中断处理;如果是异常结束,则根据发生异常的原因做相应的处理。 • 恢复被中断进程的现场。中断处理程序完成后,可将保存在中断栈中的被中断进程的现场信息取出装入到相应的寄存器中。
5.5 设备的分配 • 5.5.1 设备分配中的数据结构 • 5.5.2 设备分配思想 • 5.5.3 设备分配程序 • 5.5.4 SPOOLING技术
5.5.1 设备分配中的数据结构 • 在进行设备分配时,通常都需要借助于一些表格的帮助。在表格中记录了相应设备或控制器的状态及对设备或控制器进行控制所需的信息。在进行设备分配时所需的数据结构表格有设备控制表、控制器控制表、通道控制表、系统设备表等。
DCT 1 设备类型:Type 设备标识符:Deviceid 设备状态:等待/不等待忙/闲 DCT 2 指向控制器表的指针 DCT n 重复执行次数或时间 设备队列的队首指针 1.设备控制表 • 系统为每一个设备都配置了一张设备控制表,用来记录本设备的使用情况,如图5.8所示。 设备控制表集合
2. 控制器控制表、通道表和系统设备表 • 控制器控制表(COCT)。系统为每一个控制器都设置了一张用来记录本控制器情况的控制器控制表,如图5.9(a)所示。 • 通道控制表(CHCT)。每个通道都配有一张通道控制表,如图5.9(b)所示。 • 系统设备表(SDT)。这是系统范围的数据结构,其中记录了系统中所设备的情况。每个设备占一个表目,其中包括设备类型、设备标识符、设备控制表及设备驱动程序的入口等项。