第六章设备管理第一节I/O系统的功能、模型和接口第二节I/O设备和控制方式第三节中断机构和中断处理程序第四节设备驱动程序第五节与设备无关的IO软件第六节用户层的IO软件第七节缓冲区管理第八节磁盘存储器的性能和调度2020/9/1416.1I/O系统的功能、模型和接口I/O系统的功能I/O系统的层次结构和模型I/O系统的接口I/O系统管理的对象——I/O设备和相应的设备管理器。任务——完成用户提出的I/O请求,提高I/O速率,提高设备利用率。2020/9/1426.1.1、I/O系统的基本功能1、隐藏物理设备的细节I/O设备类型多,差异大。利用设备控制器(硬件)进行控制。隐藏物理设备的使用细节。2、与设备的无关性用户仅提供逻辑设备名来使用设备;即插即用功能。2020/9/1433、提高处理机和I/O设备的利用率设备之间、设备与处理机之间均可并行操作。要求CPU快速响应I/O请求,减少对设备运行的干预时间。2020/9/1444、对I/O设备进行控制即驱动程序的功能。具体控制方式与设备的传输速率和传输数据单位有关。5、确保对设备的正确共享以共享属性来分类,分为独占设备、共享设备。6、错误处理设备包括机械和电气部分,易出错和故障。临时性错误(重试)、持久性错误(向上层报告)6.1.2、I/O系统的层次和模型I/O软件向下与硬件相关,向上与文件系统、虚拟存储、用户直接交换,都需要I/O系统来实现I/O操作。目前均为层次式I/O系统设计,单向调用。1、I/O软件的层次——四层•1)用户层软件:实现与用户交互的接口•2)设备独立性软件:•3)设备驱动程序:实现系统对设备发出指令•4)中断处理程序2020/9/145用户层软件设备独立性软件设备驱动程序中断处理程序硬件产生I/O请求、格式化I/O等映射、保护、分块、缓冲、分配设置设备寄存器、检查R状态执行I/O操作保存CPU环境、转中断处理程序、恢复中断进程2020/9/146I/O应答2、I/O系统中各种模块之间的层次试图(图6.2)1)I/O系统的上、下接口(1)I/O系统接口是I/O系统与上层系统之间的接口。向上层提供对设备操作的抽象命令,供高层对设备的使用。OS在用户层中提供了与I/O操作有关的库函数,供用户使用。(2)软件/硬件接口在上下两个接口之间则是I/O系统。2020/9/1472)I/O系统的分层(1)中断处理程序当有I/O设备发来中断请求信号时,中断硬件初步处理后转中断处理程序。(2)设备驱动程序是进程和设备控制器之间的通信程序。将上层发来的抽象请求转化为对设备的具体参数和命令,装入控制器中。(3)设备独立性软件即设备无关性软件。I/O软件独立于具体使用的物理设备。2020/9/1486.1.3、I/O系统接口I/O系统与高层之间的接口中,根据设备类型不同,分为块设备接口、流设备接口、网络接口。1、块设备接口——控制磁盘、光盘设备的输入输出(1)块设备:磁盘等。可寻址。DMA控制方式。(2)隐藏了磁盘的二维结构。扇区编号0——n-1(3)将上层的抽象命令映射为低层操作。如将抽象命令的逻辑块号转化为盘面、磁道、扇区。2020/9/1492、流设备接口——控制字符设备的输入输出(1)字符设备:键盘、打印机等。不可寻址。中断驱动控制方式。(2)put和get操作。为字符设备建立一个字符缓冲区。(3)in-control指令。统一处理各类字符设备。包含许多参数,每个参数对应一个具体设备。2020/9/14103、网络通信接口操作系统需提供相应的网络软件和网络通信接口6.2I/O设备和设备控制器I/O设备设备控制器I/O通道总线系统I/O设备有机械部分和电子部分组成。机械部分即为一般的I/O设备,电子部分称为设备控制器或适配器(控制卡、接口卡、网卡)2020/9/14111、I/O设备的类型按传输速率分类:低速、中速、高速设备按信息交换单位分类:块设备、字符设备按设备的共享属性:独占、共享、虚拟设备•2、设备与控制器之间的接口在该接口中,有三种类型的信号线:数据信号线:用于设备和控制器之间传送数据信号控制信号线:控制器向设备发送控制信号时的通路状态信号线:传送指示设备当前状态的信号键盘、鼠标、语言输入输出打印机磁带机、磁盘机、光盘机2020/9/14126.2.1、I/O设备一些设备会有机械和电子两部分。电子部分称为设备控制器。它是CPU和设备之间的接口。•基本功能:1、接收和识别命令在控制器中应具有控制寄存器,用来存放接收的命令和参数,并进行译码•设备控制器负责控制一个或多个I/O设备,实现设备和计算机间的数据交换。2020/9/14136.2.2、设备控制器•基本功能(续上):2、数据交换--寄存器实现CPU与控制器,控制器与设备间的数据交换3、标识和报告设备的状态控制器中的状态寄存器记录设备的状态供CPU了解4、地址识别--地址译码器每个设备都有一个地址,控制器必须能识别。5、数据缓冲--缓冲器解决I/O设备与CPU、内存速度不匹配的矛盾6、差错控制控制器兼管对由I/O设备传送来的数据进行差错检测2020/9/1414•设备控制器的组成:设备控制器与处理机的接口共有三类线:数据线、地址线、控制线设备控制器与设备的接口每个接口中都存在数据、控制、状态三种信号I/O逻辑--实现对设备的控制CPU利用它向控制器发送命令;负责对命令译码和地址译码。2020/9/1415地址识别数据缓冲差错控制CPU与控制器接口控制器与设备接口数据线地址线控制线数据寄存器控制/状态寄存器I/O逻辑控制器与设备接口1控制器与设备接口n………数据状态控制数据状态控制设备控制器的组成2020/9/14166.2.3内存映像I/O1、利用特定的I/O指令如,将CPU寄存器的内容存入内存的某个单元(k)中:Storecpu-reg,k访问设备:io-Storecpu-reg,dev-no,dev-reg缺点:访问内存和访问设备需要两种不同的指令。2、内存映像I/O不区分内存单元地址和设备控制器的寄存器地址。k处于0—n-1,内存地址;k=n,控制器的寄存器地址。2020/9/1417驱动程序将IO命令转化为具体值装入设备控制器的寄存器,可用如下方法完成:6.2.4、I/O通道通道通道是专门用于处理I/O的处理机,它控制内存和外设直接进行数据交换。目的:减轻CPU的负担工作方式:CPU向通道发送I/O命令,通道执行通道程序,完成I/O后向CPU发送中断信号。通道与一般处理机的不同:指令类型单一,仅能执行I/O指令。通道没有自己的内存,通道程序放在主存中。2020/9/1418•通道的类型字节多路通道:是一种按字节交叉方式工作的通道,采用多路分时复用--按时间片轮转方式共享主通道。数组选择通道:独占使用,成组(块)传送;数组多路通道:上述两种技术的结合2020/9/1419“瓶颈”问题通道资源有限,系统需要同时启动的设备可能较多存储器通道1通道2控制器1控制器2I/O设备1I/O设备2I/O设备3I/O设备4CPU2020/9/1420“瓶颈”问题解决方法:增加设备到主机间的通路。存储器通道1通道2控制器1控制器2I/O设备1I/O设备2I/O设备3I/O设备4CPU2020/9/14216.3中断机构和中断处理程序中断是多道程序实现的基础(进程切换),也是设备管理的基础(处理机和外设并行执行)。中断是IO系统最低一层,是整个IO系统的基础。2020/9/14221、中断和陷入(1)中断——CPU对IO设备发来的中断信号的一种响应。中断是由外部设备引起,也称为外中断。(2)陷入——由CPU内部事件引起的中断。如溢出、非法指令、地址越界、电源故障等。也称为内中断。6.3.1中断简介2、中断向量表和中断优先级1)中断向量表为每种设备配以相应的中断处理程序,把该程序的入口地址放在中断向量表的一个表项中,并规定一个中断号用于设备的中断请求。2)中断优先级系统中有多个中断信号源,系统为他们规定不同的优先级。如:键盘打印机磁盘3、对多中断源的处理方式(处理打印中断的时收到磁盘中断信号)1)屏蔽(禁止)中断对任何新到的中断请求都暂时不处理,让其等待。2)嵌套中断多中断请求时,优先响应优先级最高的;高优先级中断请求可抢占低优先级中断的处理机。6.3.2中断处理程序当一个进程请求I/O操作时,该进程将被挂起。直到设备完成I/O操作后,设备控制器向CPU发送一个中断请求。CPU响应后,转中断处理程序。中断处理程序执行相应的处理,处理完后解除进程的阻塞状态。2020/9/1424(1)测定是否有未响应的中断信号当设备完成一个字符的读入(如字符设备),设备控制器向处理机发送一个中断请求信号,请求处理机将字符读入内存。处理机执行完当前指令后都要检测是否有未响应的中断信号。(2)保护被中断进程的CPU环境保存程序状态字PSW和程序计数器PC中下一条指令的地址,入中断保留区(栈)中。所有CPU寄存器的内容入栈。中断处理程序的处理过程分成以下几个步骤:2020/9/1425(3)转入相应的设备处理程序处理机测试各个中断源,确定IO设备,并发送确认信号。设备收到信号后,取消中断请求信号。将设备中断处理程序的入口地址装入到PC中。(4)进行中断处理不同的设备有不同的中断处理程序。(5)恢复被中断进程的现场中断处理完成后,恢复CPU现场,退出中断。是否返回被中断的进程,取决于:a)采用屏蔽中断方式。返回至被中断的进程b)采用中断嵌套方式,考虑有无优先级更高的中断请求唤醒被阻塞的驱动程序进程保护被中断进程的CPU环境分析中断原因,转入相应的设备处理程序打印机中断处理程序终端中断处理程序磁盘中断处理程序恢复被中断进程的CPU现场返回被中断的进程,继续执行中断请求信号2020/9/1427unix把除第四步之外的分集中起来,形成总控程序。6.4设备驱动程序设备处理程序又称设备驱动程序,是I/O进程与设备控制器之间的通信程序。主要任务:接收上层软件发来的抽象要求,比如:Read、Write等命令,再把它们转化为具体要求发送给设备控制器,启动设备执行;同时,还负责把设备控制器发来的信号传送给上层软件。2020/9/14281、设备驱动程序的功能接收由设备独立性软件发来的命令和参数,转换为具体要求。(盘块号-盘面、磁道号、扇区号)检查用户I/O请求的合法性,了解设备状态,传递或设置参数发出I/O命令,启动设备,或挂在相应的设备队列上及时响应由控制器或通道发来的中断请求,根据中断类型调用相应的中断处理程序进行处理。2020/9/14296.4.1设备驱动程序概述2、设备处理方式为每一类设备设置一个进程,专门用于执行该类设备的I/O操作。在整个系统中设置一个I/O进程,专门用于执行系统中所有各类设备的I/O操作。不设置专门的设备处理进程,只为各类设备设置相应的设备驱动程序,供用户进程或系统进程调用。(较多采用)2020/9/14303、设备驱动程序的特点驱动程序主要是指在请求I/O的进程与设备控制器之间的一个通信和转换程序。驱动程序与设备控制器和I/O设备的硬件特性紧密相关,因而对不同类型的设备应配置不同的驱动程序。驱动程序与I/O设备所采用的I/O控制方式紧密相关。(中断驱动、DMA方式)其中一部分必须用汇编语言书写,固化在ROM中。驱动程序应允许可重入。2020/9/1431将抽象要求转换为具体要求检查I/O请求的合法性读出和检查设备的状态传送必要的参数(磁盘在读写前,要传递参数至控制器的寄存器中)启动I/O设备设备驱动程序的主要任务是启动指定设备。具体的处理过程如下:2020/9/14326.4.2设备驱动程序的处理过程1、设备驱动程序的功能接收由设备独立性软件发来的命令和参数,转换为具体要求。(盘块号-盘面、磁道号、扇区号)检查用户I/O请求的合法性,了解设备状态,传递或设置参数发出I/O命令,启动设备,或挂在相应的设备队列上及时响应由控制