第九章设备管理9.1引言9.1.1设备的类别存储设备输入/输出设备终端设备脱机设备磁带软盘磁盘硬盘其他(磁鼓,光盘等)键盘打印机显示器图形输入/输出设备图像输入/输出设备绘图机音声输入/输出设备网络通信板其他会话型通用终端批处理型智能终端专用终端虚终端外部设备图9.1按使用特性对外部设备的分类IO设备的分类•按数据传输率分类–低速设备:键盘、鼠标等•数据传输率在每秒几个到几百字节范围。–中速设备:针式、激光打印机等•数据传输率在每秒数千字节到万字节的范围。–高速设备:磁盘、光盘等•按一次操作信息量键盘、终端、打印机等以字符为单位组织和处理信息的设备被称为字符设备;而磁盘、磁带等以字符块为单位组织和处理信息的设备被称为块设备。•按共享属性划分设备类型–独占设备•一段时间内只允许一个用户(进程)访问的设备;•如打印机、磁带机等顺序设备;•作为系统资源,也称为临界资源;•在多个进程并发运行的系统中,应互斥的访问该类资源。•使用方式:申请,使用,使用…,使用,释放。–共享设备•一段时间内可以允许多个用户(进程)访问的设备;•如磁盘可随机访问的随机设备;•使用方式:使用,使用,…,使用。–虚拟设备•通过虚拟技术将独占设备变换成可以共享的逻辑设备,供多个进程同时访问。-spooling技术按适配器CPU磁盘适配器USB适配器图形适配器内存操作系统如何管理设备的呢?CPU与内存已经讲过9.1.2设备管理的功能和任务1、任务A、分配设备B、外设与CPU交换数据C、提供用户和设备之间的接口D、实现设备与设备、设备与CPU的并行操作2、功能A、将进程对设备的要求转达给设备管理程序B、分配设备给请求进程,并使未满足设备要求的进程阻塞等待。C、实现设备与设备、设备与CPU的并行操作D、进行缓冲区管理9.2数据传送控制方式设备管理的主要任务之一是控制设备和内存或CPU之间的数据传送,本节介绍常用数据传送控制方式。选择和衡量控制方式有如下几条原则:(1)数据传送速度足够高,能满足用户的需要但又不丢失数据;(2)系统开销小,所需的处理控制程序少;(3)能充分发挥硬件资源的能力,使得I/O设备尽量忙,而CPU等待时间少。•IO操作由程序发起•处理器定期轮询IO设备的状态•直到处理完毕•有点:简单,易于实现•缺点:耗费大量的时间在设备状态的查询上,严重降低系统性能9.2.1程序直接控制方式(CPU与IO无并行)硬件连接方式I/O控制器1I/O控制器nI/O设备1I/O设备n……CPU数据线地址线控制线内存Start……启动位状态位控制状态寄存器:信号线图程序直接控制方式数据缓冲寄存器程序控制IO(主机询问外设)发送IO请求读取IO状态检查IO状态进行IO传输,读取数据将数据写入内存没有就绪,进行轮询CPU-IOIO-CPU出错处理IO-CPUCPU-内存9.2.2I/O中断方式(CPU与IO按字节并行)硬件连接方式I/O控制器1I/O控制器nI/O设备1I/O设备n……CPU数据线地址线控制线Int内存Start……启动位中断位控制状态寄存器:信号线图9.3中断控制方式的传送结构数据缓冲寄存器中断驱动IO(外设请求主机)发送IO请求读取IO状态检查IO状态进行IO传输,读取数据将数据写入内存CPU-IOIO-CPU出错处理CPU转去执行其他任务IO中断中断处理是核心就绪中断IO的优点•优点–外设进行数据处理的时候,CPU不必等待,从而提高了CPU的使用率–能处理异常,提供系统调用•缺点–CPU每次处理的数据量比较少(通常不超过几个字节=数据缓冲寄存器的大小)DMA技术–直接访问存储器–系统总线上引入新的独立控制单元-DMA控制器–DMA控制器控制内存与IO设备之间的数据传输9.2.3DMA方式(CPU与IO按块并行)1、硬件连接方式I/O设备DMA控制器CPU内存数据中断位启动位……控制状态寄存器数据缓冲寄存器传送字节数计数器内存地址寄存器图9.5DMA方式的传送结构DMA控制过程9.2.4通道控制方式(CPU与IO并行)•通道引入–由通道控制器处理IO•有自己专用的内存器•可执行由通道指令组成的通道程序•可进行较为复杂的IO控制1、硬件连接方式CPU内存字节多路通道数组多路通道选择通道I/O控制器I/O控制器I/O控制器终端终端终端I/O控制器磁带I/O控制器磁带I/O控制器磁带I/O控制器磁带图9.7通道方式的数据传送结构2、通道工作方式为了摆脱繁杂的I/O工作,一旦有输入输出任务,CPU下达给通道,通道通过执行通道程序,独立的完成输入输出工作,然后向CPU汇报。实现了设备与设备、通道与通道、通道与CPU、设备与CPU的并行操作。通道是专门完成输入输出工作的硬件机构,也称为I/O处理器。通道有自己的指令,称通道控制字(CCW)。其指令形式为:操作码PR计数内存地址write002501850write11250720以上为一简单的通道程序,表示把一个记录的500个字符分别写入从内存1850开始的250个单元,和从内存720开始的250个单元中。通道指令在进程要求数据时,由系统自动生成,通道程序放在内存中,有一个通道地址寄存器存放通道程序的首地址。还有一个通道状态字寄存器存放通道程序的执行情况。通道控制方式数据输入过程描述如下:A、当输入数据时,CPU发启动指令,并指出I/O操作、设备号以及对应的通道。B、通道收到启动指令后,形成通道程序,设置对应设备的控制状态。C、执行通道程序,将数据送入内存指定区域。D、输入结束时,发出中断信号,请求CPU处理。E、中断处理结束后,返回被中断的进程,继续执行。9.3中断技术9.3.1中断的基本概念1、术语A、中断B、中断源C、中断响应D、中断屏蔽E、关中断和开中断(禁止中断和允许中断)F、中断处理G、中断优先级H、中断嵌套中断(Interrupt)是指计算机在执行期间,系统内发生任何非寻常的或非预期的急需处理事件,使得CPU暂时中断当前正在执行的程序而转去执行相应的事件处理程序,待处理完毕后又返回原来被中断处继续执行或调度新的进程执行的过程。引起中断发生的事件被称为中断源。中断源向CPU发出的请求中断处理信号称为中断请求,而CPU收到中断请求后转相应的事件处理程序称为中断响应。在有些情况下,尽管产生了中断源和发出了中断请求,但CPU内部的处理机状态字PSW的中断允许位已被清除,从而不允许CPU响应中断。这种情况称为禁止中断。CPU禁止中断后只有等到PSW的中断允许位被重新设置后才能接收中断。禁止中断也称为关中断,PSW的中断允许位的设置也被称为开中断。中断请求、关中断、开中断等都由硬件实现。开中断和关中断是为了保证某些程序执行的原子性。中断屏蔽是指在中断请求产生之后,系统用软件方式有选择地封锁部分中断而允许其余部分的中断仍能得到响应。2、中断分类与优先级通常,根据中断源产生的条件,分为外中断和内中断。外中断是来自处理机和内存外部的中断,如I/O中断、外部信号中断。内中断是处理机和内存内部产生的中断,称为陷入(trap),包括程序性中断、访管中断(系统调用)。中断优先级是指,根据中断请求轻重缓急的程度,排列出来的响应中断的次序。3、软中断中断和陷入都可看作硬件中断。若由通信进程之间模拟硬中断的信号通信方式,称为软中断。当CPU收到软中断信号后,只在适当的时机才做响应。例如:编程异常通常叫做软中断中断源发中断请求或软中断信号后,CPU或接收进程在适当的时机自动进行中断处理或完成软中断信号对应的功能。软中断是软件实现的中断,也就是程序运行时其他程序对它的中断;而硬中断是硬件实现的中断,是程序运行时设备对它的中断。4、中断处理过程图9.8中断处理过程判断中断响应文件关中断保存被中断现场分析中断原因转中断处理子程序执行中断处理子程序恢复现场开中断返回中断点9.4缓冲技术9.4.1缓冲区通常,使用硬件寄存器或者一个内存区域,作为缓冲区,用于数据的输入输出传送。引入缓冲的好处A、使慢速外设与快速CPU速度尽可能匹配。B、减少外设中断CPU的次数和CPU处理中断花费的时间。C、缓解输入输出过程中DMA或通道方式时的瓶颈问题。连接指针互斥标识位缓冲器号数据块号设备号图9.9缓冲首都缓冲区的组织缓冲首部:用来标识该缓冲区和用于管理;缓冲体:用来存放数据。操作系统用户进程I/O设备进入进入移动到(a)无缓冲(b)单缓冲(c)双缓冲I/O设备I/O设备进入移动到┇(d)循环缓冲I/O设备进入移动到9.4.2缓冲的种类单缓冲属于临界资源,不允许多个进程同时对一个缓冲区操作,故设备之间不能达到并行操作。现代系统中一般使用多缓冲的循环缓冲或缓冲池结构。缓冲池面向字符/块设备缓冲区都可以有两种属性:私用缓冲区(专用缓冲区):前面介绍的循环缓冲就是针对某一特定设备的,会产生严重的问题:有大量I/O操作进程因分配缓冲区不足造成阻塞。进程无I/O请求使得所分配缓冲区资源浪费。公用缓冲区,为所有进程所共享,即当进程需要进行I/O时,需要向系统申请一个缓冲,系统就在属于公共的缓冲区中进行分配,造成按需分配的管理方式,需建立缓冲池管理。因此,为了提高缓冲区的利用率,通常不将缓冲区与某一具体设备固定的联系在一起,而是将所有的缓冲区集中管理。9.4.3缓冲池的管理缓冲池由多个缓冲区组成,每个都可以用于输入/输出。F(em)缓冲区1缓冲区2…L(em)F(in)缓冲区1缓冲区m…L(in)F(out)缓冲区n…L(out)图9.10缓冲区队列1、缓冲池的结构工作缓冲区缓冲区1缓冲区n图9.11缓冲池的工作缓冲区hinsout缓冲区m缓冲区zsinhout缓冲池提取输入收容输入收容输出提取输出CPUI/O设备2、缓冲池管理管理缓冲池的几个操作a、从三种缓冲区队列中按一定的选取规则取出一个缓冲区的过程take_buf(type);b、把缓冲区按一定的选取规则插入相应缓冲区队列的过程add_buf(type,number)c、供进程申请缓冲区用的过程get_buf(type,number);d、供进程将缓冲区放入相应缓冲区队列的过程put_buf(type,work_buf).其中,参数type表示缓冲队列类型,number表示缓冲区号,work_buf表示工作缓冲区类型。下面给出过程get_buf和put_buf的描述。首先,设互斥信号量S(type),其初值为1。设描述资源数目的信号量RS(type),其初值为n(n为type队列长度)。get_buf(type,number):beginP(RS(type))P(S(type))Pointerofbuffer(number)=take_buf(type,number)V(S(type))endput_buf(type,number):beginP(S(type))add_buf(type,number)V(S(type))V(RS(type))end9.5设备分配一、设备分配使用的数据结构…表目i…表目1SDFDCT指针…获得设备的进程设备标识设备类型COCT指针控制器等待队列首控制器等待队列尾…设备忙/闲标记设备标识设备类型DCT通道等待队列首控制器等待队列尾…通道忙/闲标记通道标识CHCTCHCT指针控制器等待队列首控制器等待队列尾…控制忙/闲标记控制器标识COCT图9.12数据结构表表目1┇┇表目i┇┇设备类型设备标识DCT指针设备驱动程序入口设备类型设备标识设备忙/闲标志重复执行次数/时间COCT指针获得设备的进程号设备等待队列首指针设备等待队列尾指针系统设备表(SDT)设备控制表(DCT)通道标识通道忙/闲标志与通道连接的控制器表首址通道等待队列首指针通道等待队列尾指针控制器标识控制器忙/闲标志CHCT指针控制器等待队列首指针控制器等待队列尾指针通道控制表(CHCT)控制器控制表(COCT)设备分配中的数据结构二、设备分配的原则和策略1、原则根据设备特性、用户要求和系统配置决定。A、充分发挥设备使用效率B、不能造成死锁C、用户程序和设备相隔离即设备独立性2、策略A、先请求