1 第七章设备管理 设备是指计算机系统中除CPU,内存 和系统控制台以外的所有设备。 设备管理程序是用于对这类设备进行 控制和管理的一组程序。 设备管理是OS中最复杂且与硬件紧 密相关的部分。 操 作 系 统 | 设 备 管 理 2 CUIT 徐虹 7.1I/O系统的组成 ?I/O系统的结构 ?微机型I/O系统 ?I/O设备通过设备控制器连接到总线 上,CPU通过设备控制器与相应的设 备进行通信。 ?主机型I/O系统 ?具有通道的I/O系统结构:I/O设备、 设备控制器、I/O通道、计算机 操 作 系 统 | 设 备 管 理 3 CUIT 徐虹 ?设备的类别 ?按使用特性 ?存储设备 ?I/O设备 ?终端设备 ?脱机设备。 ?按从属关系 ?系统设备 ?用户设备 操 作 系 统 | 设 备 管 理 4 CUIT 徐虹 ?从资源分配角度 ?独享设备 ?共享设备 ?虚拟设备:通过SPOOLING技术把独享 设备改造为共享设备,以提高利用率。 ?按信息组织方式 ?字符设备 ?块设备 ?设备分类的目的:简化设备管理程序 操 作 系 统 | 设 备 管 理 5 CUIT 徐虹 操 作 系 统 | 设 备 管 理 6 CUIT 徐虹 ?设备控制器 设备控制器是一个可编址设备,分 为字符设备控制器和块设备控制器,是 CPU与设备间的接口。 ?功能 ?接收和识别命令:命令寄存器和译码器 ?数据交换:数据寄存器 ?设备状态的了解和报告:状态寄存器 ?地址识别:地址寄存器 2 操 作 系 统 | 设 备 管 理 7 CUIT 徐虹 ?设备控制器的组成 ?设备控制器与处理机的接口 ?数据线(数据寄存器、控制/状态寄存器) ?地址线 ?控制线 ?设备控制器与设备的接口 ?数据信号 ?控制信号 ?状态信号 ?I/O逻辑:实现对设备的控制 操 作 系 统 | 设 备 管 理 8 CUIT 徐虹 ?设备管理程序的设计目标 ?方便性:提供友好透明的用户接口 ?并行性:提高设备的利用率和系统效率 ?均衡性:使用外存设备作为虚拟设备 ?独立性:与设备无关性 操 作 系 统 | 设 备 管 理 9 CUIT 徐虹 ?设备管理的基本功能 ?提供和进程管理系统的接口 ?进行设备分配 ?实现设备之间,设备与CPU等之间的并 行操作 ?进行缓冲区管理 操 作 系 统 | 设 备 管 理 10 CUIT 徐虹 7.2数据传送(I/O)控制方式 ?选择和衡量控制方式的原则: ?速度高且安全 ?系统开销小 ?使I/O设备尽量忙,CPU等待时间 少 操 作 系 统 | 设 备 管 理 11 CUIT 徐虹 ?程序直接控制方式 ?工作原理 ?由用户进程直接控制内存或CPU与外设 间的信息传送。 ?优点:控制简单硬件要求少 ?缺点: ?CPU与外围设备只能串行工作 ?设备间不能并行操作 ?安全性差。 操 作 系 统 | 设 备 管 理 12 CUIT 徐虹 向I/O控制器发读命令 读I/O控制器的状态 检查状态 从I/O控制器中读入字 向存储器中写字 传送完成 完成下条指令 出错 未完 未 就 绪 ?控 制 流 程 3 操 作 系 统 | 设 备 管 理 13 CUIT 徐虹 ?中断方式 ?中断的概念 ?中断源,中断请求,中断响应 ?开中断,关中断 ?中断屏蔽 操 作 系 统 | 设 备 管 理 14 CUIT 徐虹 ?中断的分类与优先级 ?中断的分类:外中断,内中断(陷入) ?中断的优先级 ?软中断 ?软中断是通讯进程之间用来模拟硬中断的 一种信号通讯方式。 ?中断源发中段请求或软中断信号后,CPU 或接收进程在适当的时机自动进行中断处 理或完成软中断信号对应的功能。 操 作 系 统 | 设 备 管 理 15 CUIT 徐虹 ?中断处理过程 ?CPU检查响应中断的条件是否满足 ?如CPU响应中断,关中断 ?保护现场 ?分析中断原因,调用中断处理子程序 ?执行中断处理子程序 ?退出中断,恢复现场 ?开中断,CPU继续执行 操 作 系 统 | 设 备 管 理 16 CUIT 徐虹 ?中断方式的处理过程 ?CPU与设备(控制ID)间有中断请求线且 设备控制器的控制状态寄存器中有相应的 中断允许位。 ?特点: ?CPU利用率提高,能支持多道程序和设备 并行工作。 ?数据传送过程中,中断次数较多;可能出 现数据丢失现象 操 作 系 统 | 设 备 管 理 17 CUIT 徐虹 设备 接收CPU发来的 START指令 数据—>寄存器 N 满? Y 控制器发中断信号 CPU 向设备发START指令, 将中断允许位置1 调度程序调度其它进程 其它进程执行 N 收到中断信号? Y 中断处理 被中断进程执行 操 作 系 统 | 设 备 管 理 18 CUIT 徐虹 ?DMA方式 ?在外围设备和内存之间开辟直接的数据 交换通路。信息的传送方向,传送的源 地址和目的地址及传送长度都由CPU控 制。 ?特点 ?数据传输的基本单位是数据块 ?数据直接从设备到内存 ?仅在传送开始和结束时才需CPU干预,传 送过程在控制器的控制下完成。 4 操 作 系 统 | 设 备 管 理 19 CUIT 徐虹 操 作 系 统 | 设 备 管 理 20 CUIT 徐虹 操 作 系 统 | 设 备 管 理 21 CUIT 徐虹 操 作 系 统 | 设 备 管 理 22 CUIT 徐虹 操 作 系 统 | 设 备 管 理 23 CUIT 徐虹 ?DMA控制器的组成 ?DMA的四类寄存器:命令/状态寄存器CR、 内存地址寄存器MAR、数据寄存器DR和 数据计数器DC。 ?工作过程 操 作 系 统 | 设 备 管 理 24 CUIT 徐虹 ?与中断的区别 ?中断处理的时间不同 ?数据传送不由CPU控制完成 ?缺点 ?使控制过程复杂化,可能产生内存地址 冲突 ?多个DMA控制器的同时使用很不经济 5 操 作 系 统 | 设 备 管 理 25 CUIT 徐虹 ?通道控制方式 ?通道是一个独立于CPU的专管I/O控制 的处理机,它控制设备与内存直接进 行数据交换。通道的启动由CPU发指 令执行。 ?通道类型 ?字节多路通道 ?数组选择通道 ?数组多路通道 操 作 系 统 | 设 备 管 理 26 CUIT 徐虹 ?多通路I/O系统 ?单通路I/O系统: ?多通路I/O系统: ?通道程序 ?通道是通过执行通道程序,并与设备控制 器来共同实现对I/O设备的控制的。通道程 序是由一系列的通道指令所构成。 ?工作过程 操 作 系 统 | 设 备 管 理 27 CUIT 徐虹 例.一个进程的大小为5个页面,为它分配了四个物理块。当前 每个块的情况如下表所示(都为十进制数,且从0开始计数 。)。当虚页4发生缺页时,使用下列的页面置换算法,哪 一个物理块将被换出?并解释原因. 页号块号加载时间访问时间访问位R 修改位M 2060 161 0 1 1 1 130 160 0 0 0226 162 1 0 3320 163 1 1 11. IFO算法2. LRU算法3. CLOCK算法 操 作 系 统 | 设 备 管 理 28 CUIT 徐虹 7.3缓冲管理 ?缓冲技术 ?引入原因: ?提高CPU,通道,I/O设备的并行能 力。 ?改善CPU和I/O设备间速度不匹配的 情况。 ?可减少中断CPU的次数,放宽CPU对 中断的响应时间。 ?硬件缓冲器和软件缓冲 操 作 系 统 | 设 备 管 理 29 CUIT 徐虹 ?单缓冲和双缓冲 ?单缓冲 ?设:数据从磁盘—>缓冲区T ?数据从缓冲区—>用户区M ? CPU计算时间C ?则:对数据的处理时间为max(C,T)+M ?如无缓冲区,处理时间为:T+C 操 作 系 统 | 设 备 管 理 30 CUIT 徐虹 6 操 作 系 统 | 设 备 管 理 31 CUIT 徐虹 ?双缓冲 ?系统处理时间:max(C,T) ?当C<T :块设备连续输入 ? C>T :CPU进行处理 ?两台计算机进行通信,配备双缓冲,实现 双向数据传送。 操 作 系 统 | 设 备 管 理 32 CUIT 徐虹 ?循环缓冲 ?用几个缓冲区组成一个环形缓冲区, 供输入/出共同使用。 ?工作原理 ?Nextg:指向装数据的缓冲区; ?Nexti:指向空缓冲区; ?Current:正在使用的缓冲区单元。 操 作 系 统 | 设 备 管 理 33 CUIT 徐虹 操 作 系 统 | 设 备 管 理 34 CUIT 徐虹 ?缓冲区的使用 ?Getbuf 过程(获取缓冲的过程) ?Releasebuf过程(释放缓冲的过程) ?进程同步 ?Nexti赶上Nextg:系统受计算限制:所 有缓冲区装满数据,输入进程阻塞。 ?Nextg赶上Nexti:系统受I/O限制:所有 缓冲区为空,输出进程阻塞。 操 作 系 统 | 设 备 管 理 35 CUIT 徐虹 ?缓冲池 ?缓冲池的结构 ?把输入和输出多缓冲器结合起来,形成一 个既能用于输入,又能用于输出的缓冲器, 称为缓冲池。 ?空白缓冲队列emq F(emq),L(emq) ?装满输入数据的缓冲队列inq F(inq), L(inq) ?装满输出数据的缓冲队列outg F(outg) L(outg) 操 作 系 统 | 设 备 管 理 36 CUIT 徐虹 ?工作缓冲区 ?收容输入缓冲区hin;用于收容设备输入 的数据 ?提取输入缓冲区sin ;用于提取设备输入 的数据 ?收容输出缓冲区hout;用于收容CPU输 出的数据 ?提取输出缓冲区sout;用于提取CPU输 出的数据 7 操 作 系 统 | 设 备 管 理 37 CUIT 徐虹 ?对缓冲池的操作 ?take-buf(type):从三种缓冲区 队列中按一定的选取规则取出一个 缓冲区。 ?add-buf (type,number ):把指定 编号的缓冲区,挂在指定队列的未 尾。 操 作 系 统 | 设 备 管 理 38 CUIT 徐虹 ?get-buf (type,number ):从某种类型的 队列中获得一缓冲区 每种队列设置用于互斥的信号量MS (type) = 1 每种队列设置描述资源数目的信号量RS (type) = n Procedure get-buf (int type ) begin wait (RS(type)) ; wait (MS(type)); B(number) = take-buf (type) Signal (MS(type)) ; end 操 作 系 统 | 设 备 管 理 39 CUIT 徐虹 ?put-buf (type,number):用于释放某个 不再需要的或已装满数据的工作缓冲区并 将它挂再指定队列的末尾。 Procedure put-buf (int type ) Begin wait (MS(type)) ; add-buf(type, number) ; Signal (MS(type)) ; Signal (RS(type)) ; end 操 作 系 统 | 设 备 管 理 40 CUIT 徐虹 ?缓冲池工作过程 ?收容输入hin 输入进程输入 ?hin = get-buf (emq) ?put-buf (inq, hin): ?收容输出hout 计算进程输出 ?hout = get-buf (emq) : ?put-buf (outq, hout): ?提取输入sin 计算进程输入 ?sin = get-buf (inq) : ?put-buf (emq, sin): ?提取输出sout 输出进程输出 ?sout = get-buf (outq) : ?put-buf (emq, sout): 操 作 系 统 | 设 备 管 理 41 CUIT 徐虹 7. 4 设备分配 ?当某进程向系统提出I/O请求后,设备分配 程序按照一定的策略,把所要求的设备分 配给它。为确保CPU与设备之间能进行通 讯,还应分配相应的控制器和通道。 操 作 系 统 | 设 备 管 理 42 CUIT 徐虹 ?设备管理中的数据结构 ?设备控制表(DCT):每台设备一张 ?设备标识符 ?设备类型 ?设备地址或设备号 ?设备状态 ?等待队列指针 ?重复执行的次数和时间 ?I/O控制器指针 8 操 作 系 统 | 设 备 管 理 43 CUIT 徐虹 ?系统设备表SDT :整个系统一张 ?记录系统中所拥有的全部I/O设备的情况, 反映系统中设备资源的状态。 ?DCT指针,指向有关设备的设备控制器 表 ?正在使用设备的进程标识 ?设备驱动程序入口 操 作 系 统 | 设 备 管 理 44 CUIT 徐虹 ?控制器表COCT 每个控制器一张: 反映I/O控制器的使用状态和通道的连 接情况 ?控制器标识 ?控制器状态 ?CHCT指针 ?控制器等待队列队首指针 ?控制器等待队列队尾指针 操 作 系 统 | 设 备 管 理 45 CUIT 徐虹 ?通道控制表CHCT 每个通道一张 ?通道标识符 ?通道状态 ?通道等待队列首 ?通道等待队列尾 ?控制器表首址 操 作 系 统 | 设 备 管 理 46 CUIT 徐虹 ?设备分配原则 ?设备的固有属性 ?设备分配策略 ?静态分配: ?动态分配: ?设备分配算法 ?先请求先分配 ?优先级高者先分配 ?设备分配中的安全性 ?一个进程只能提出一个I/O请求 ?多请求方式 操 作 系 统 | 设 备 管 理 47 CUIT 徐虹 ?设备独立性 ?应用程序独立于使用的物理设备,在 应用程序中使用逻辑设备名称来请求 使用某类设备。系统在执行时,是使 用物理设备名称。 ?逻辑设备的引入 ?为提高系统的可适应性和可扩展性,使 用户程序与实际物理设备无关。 ?逻辑设备的特性是该类物理设备的特性 的抽象。 操 作 系 统 | 设 备 管 理 48 CUIT 徐虹 ?设备独立性软件 ?执行所有设备的公有操作 ?设备的分配与回收 ?逻辑设备到物理设备的映射 ?保护 ?缓冲管理 ?差错控制 ?向用户层(或文件层)软件提供统一的接 口 9 操 作 系 统 | 设 备 管 理 49 CUIT 徐虹 ?逻辑设备表LUT(Logical Unit Table) ?联系逻辑设备的名称和物理设备名称的 映象表。 ?在进行设备分配时,通常是先将系统所 拥有的物理设备分配给要求该设备的进程, 然后再把进程提出I/O请求时之逻辑设备 名称填入PAT的该物理设备表目中,称逻 辑设备已连接到相应的物理设备上了。 ?LUT的设置方法:整个系统一张或每个 用户一张。 操 作 系 统 | 设 备 管 理 50 CUIT 徐虹 ?设备分配程序 ?分配设备 ?分配控制器 ?分配通道 ?算法描述 ?仅适用于单路的I/O系统:只有一条通路 与内存相连. ?改进 ?增加设备独立性 ?多通路 操 作 系 统 | 设 备 管 理 51 CUIT 徐虹 进程P来的I/O请求 搜索SDT找到DCT指针 查DCT,该设备忙? ny 按分配策略选取进程P按分配策略入I/O队列 n 进程P被选中?P进程等待设备 yn 检查安全性 y 该设备分配给P 操 作 系 统 | 设 备 管 理 52 CUIT 徐虹 查DCT,找到COCT指针 y 控制器忙?P等待控制器 n 给P分配控制器 查COCT找到CHCT指针 y 通道忙?P等待通道 n 分配通道 启动I/O 操 作 系 统 | 设 备 管 理 53 CUIT 徐虹 ?SPOOLing技术 ?SPOOLing系统 ?多台外设通过通道或DMA 器件和主机与外 存连接起来,实现脱机I/O功能。 ?SPOOLING 系统的组成 ?输入井和输出井。 ?输入缓冲区和输出缓冲区。 ?输入程序和输出程序:每个程序包括读过 程和写过程 ?请求操作队列表。 操 作 系 统 | 设 备 管 理 54 CUIT 徐虹 ?工作原理 ?例:输入方式: ?在系统输入模块收到作业请求输入信号后,输 入管理模块中的读进程负责将信息从输入装置 读入缓冲区。当缓冲区满时,由写进程写到外 存输入井中。重复执行,直到作业输入完毕。 ?特点 ?提高I/O速度 ?将独占设备改造为共享设备 ?实现了虚拟设备功能。 10 操 作 系 统 | 设 备 管 理 55 CUIT 徐虹 请求输入 信息?缓冲区 N 缓冲区满或结束标志 Y 缓冲区?磁盘 N 结束? Y 调中断处理程序,结束输入 操 作 系 统 | 设 备 管 理 56 CUIT 徐虹 7.5设备处理 ?它是驱动物理设备和DMA控制器或I/O控 制器等直接进行I/O操作的子程序的集合, 是I/O进程与设备控制器之间的通信程序。 ?主要任务: ?接收上层软件发来的抽象要求,把它转化为具 体要求后,发送给设备控制器,启动设备去执 行 ?将由设备控制器发来的信号传送给上层软件。 操 作 系 统 | 设 备 管 理 57 CUIT 徐虹 ?设备驱动程序的功能 设备开关表DST:管理设备驱动程序,并给 出相应设备的各种操作程序的入口地址。 ?将接收到的抽象要求转换为具体要求 ?检查用户I/O请求的合法性,了解I/O设备的状态,传 递有关参数,设置设备的工作方式 ?发出I/O命令,启动分配到的I/O设备,完成指定的 I/O操作 ?及时响应由控制器或通道发来的中断请求,再根据其 中断类型调用相应的中断处理程序进行处理 ?对于设置有通道的计算机系统,驱动程序还能根据用 户的I/O请求,自动地构成通道程序。 操 作 系 统 | 设 备 管 理 58 CUIT 徐虹 ?设备驱动程序的特点 ?它主要是在请求I/O的进程与设备控制 器之间的一个通信程序 ?驱动程序与I/O设备的特性紧密相关 ?与I/O控制方式紧密相关 ?与硬件紧密相关,用汇编编写,固化 在ROM中 操 作 系 统 | 设 备 管 理 59 CUIT 徐虹 ?处理过程 ?将抽象要求转换为具体要求 ?检查I/O请求的合法性 ?读出和检查设备的状态 ?传送必要的参数 ?工作方式的设置 ?启动I/O设备 操 作 系 统 | 设 备 管 理 60 CUIT 徐虹 小结 ?设备分类 ?I/O控制方式 ?中断技术 ?缓冲技术 ?设备分配原则和算法 ?设备驱动程序