1、Windows-设备管理设备管理Windows I/OWindows I/O系统系统Windows I/O系统由若干执行体组件与设备驱动程序构成,联合起来管理硬件设备,并向应用程序和系统提供接口以操纵硬件设备。 Windows I/O系统的设计目标是为为应用程序应用程序提供一个有关设提供一个有关设备的备的抽象抽象,包括硬件(物理)设备和软件(虚拟或逻辑)设备。,包括硬件(物理)设备和软件(虚拟或逻辑)设备。 I/O管理器管理器nI/O管理器是管理器是I/O系统的核心;系统的核心;n它将应用程序和系统组件与虚拟的、逻辑的和物理的设它将应用程序和系统组件与虚拟的、逻辑的和物理的设备连接起来,并定义
2、了基础设施来支持设备驱动程序。备连接起来,并定义了基础设施来支持设备驱动程序。 设备驱动程序设备驱动程序n设备驱动程序通常为某一种特定类型的设备提供设备驱动程序通常为某一种特定类型的设备提供I/O接接口;口;n设备驱动程序接收来自设备驱动程序接收来自I/O管理器传送来的命令,完成管理器传送来的命令,完成这些命令,然后通知这些命令,然后通知I/O管理器;管理器;n设备驱动程序通常使用设备驱动程序通常使用I/O管理器来向其他的共享统一管理器来向其他的共享统一设备接口的设备驱动程序转送设备接口的设备驱动程序转送I/O命令。命令。PnP管理器管理器nPnP管理器与管理器与I/O管理器及总线驱动程序(管
3、理器及总线驱动程序(bus driver)一起工作,以指导硬件资源的分配,检测并响应硬件设一起工作,以指导硬件资源的分配,检测并响应硬件设备的加入和移除。备的加入和移除。nPnP管理器和总线驱动程序负责在检测到一个设备时,管理器和总线驱动程序负责在检测到一个设备时,加载该设备的驱动程序。加载该设备的驱动程序。n当一个设备被加入到缺乏正确设备驱动程序的系统中时,当一个设备被加入到缺乏正确设备驱动程序的系统中时,执行体执行体PnP管理器将请求用户模式管理器将请求用户模式PnP管理器的设备安管理器的设备安装服务。装服务。 电源管理器电源管理器n电源管理器与电源管理器与I/O管理器一起工作,以指导系统
4、和各个管理器一起工作,以指导系统和各个单独的设备驱动程序能够经历电源状态的转变。单独的设备驱动程序能够经历电源状态的转变。n系统电源状态描述整体系统的能源消耗,包括系统工作系统电源状态描述整体系统的能源消耗,包括系统工作状态、系统休眠状态及系统关机状态等。状态、系统休眠状态及系统关机状态等。 硬件抽象层硬件抽象层HALnHAL提供一组提供一组API,将不同平台之间的差异隐藏起来,将不同平台之间的差异隐藏起来,从而使驱动程序与处理器和中断控制器的特殊性相互隔从而使驱动程序与处理器和中断控制器的特殊性相互隔离开。离开。 一组一组Windows管理规范(管理规范(WMI)支持例程)支持例程n即即Wi
5、ndows驱动程序模型(驱动程序模型(WDM)WMI提供者,主要提供者,主要用于系统管理和监视。用于系统管理和监视。n设备驱动程序可以使用设备驱动程序可以使用WDM WMI提供者作为中间媒提供者作为中间媒介与用户模式的介与用户模式的WMI服务进行通信。服务进行通信。 同时需要注意的是:同时需要注意的是:Windows操作系统是操作系统是分分态态的操作系统,用户应用程序运行在的操作系统,用户应用程序运行在用户用户态态,操作系统代码(如系统服务和设备驱动,操作系统代码(如系统服务和设备驱动程序)在程序)在核心态核心态下运行。下运行。用户态程序只能调用用户态程序只能调用WindowsWindows子
6、系统提供的子系统提供的APIAPI来同设备交互,当来同设备交互,当请求传递到请求传递到I/OI/O管理器管理器时,它进行必要的参数匹配和操作安全性时,它进行必要的参数匹配和操作安全性检查,然后由这个请求构造出合适的检查,然后由这个请求构造出合适的I/OI/O请求包请求包(IRP),(IRP),并把此并把此IRPIRP传递到适当的驱动程序去,并给应用程序一个消息,通知这次传递到适当的驱动程序去,并给应用程序一个消息,通知这次I/OI/O操作还没完成。操作还没完成。 驱动程序一般是通过硬件抽象层来和硬件交互,从而完驱动程序一般是通过硬件抽象层来和硬件交互,从而完 成成I/OI/O请求工作。请求工作
7、。 驱动程序完成驱动程序完成I/OI/O操作后,它将调用一个特殊的内核服务操作后,它将调用一个特殊的内核服务 例程来完成例程来完成IRPIRP。这时,。这时,I/OI/O管理器把数据和结果返回给管理器把数据和结果返回给 WindowsWindows和用户应用程序。和用户应用程序。I/OI/O控制方式控制方式 程序程序I/O方式方式 中断驱动中断驱动I/O控制方式控制方式 DMA I/O控制方式控制方式 I/O通道控制方式通道控制方式程序程序I/O方式方式向I/O控制器发读命令 读I/O控制器的状态 检查状态?从I/O控制器中读入字向存储器中写字 传送完成?下一条指令完成CPUI/OI/OCPU
8、I/OCPU出错CPU内存未完未就绪就绪中断驱动中断驱动I/OI/O控制方式控制方式向I/O控制器发读命令 读I/O控制器的状态 检查状态?从I/O控制器中读入字向存储器中写字 传送完成?下一条指令完成CPUI/OI/OCPUI/OCPU出错CPU内存未完就绪 CPU做其它事中断DMADMA控制方式控制方式设置MAR和DC初值启动DMA传送命令挪用存储器周期传送数据字 存储器地址增1 字计数寄存器减1 DC=0?请求中断在继续执行用户程序的同时,准备又一次传送否是I/OI/O通道控制方式通道控制方式 简介:简介:I/OI/O通道方式通道方式是是DMADMA方式方式的发展,可进一步减少的发展,可
9、进一步减少 CPUCPU的干预,把对一个的干预,把对一个数据块数据块的读(或写)为单位的干的读(或写)为单位的干 预减少为对预减少为对一组数据块一组数据块的读(或写)及有关的控制和管的读(或写)及有关的控制和管 理为单位的干预。通道时负责外围设备与主存之间进行理为单位的干预。通道时负责外围设备与主存之间进行 数据交换、能单独完成输入输出操作的处理机。它控制数据交换、能单独完成输入输出操作的处理机。它控制 设备与内存直接进行数据交换,它有自己的通道指令,设备与内存直接进行数据交换,它有自己的通道指令, 这些通道指令的运行由这些通道指令的运行由CPUCPU启动,并在操作结束时向启动,并在操作结束时
10、向CPUCPU 发出中断信号。发出中断信号。 通道程序由一系列通道指令所构成,通道指令的每条指通道程序由一系列通道指令所构成,通道指令的每条指 令中包含如下信息:令中包含如下信息:操作码操作码;内存地址内存地址;计数计数; 通道程序结束位通道程序结束位P P;记录结束标志记录结束标志R R。工作流程:工作流程:CPUCPU向向I/OI/O通道发送一条通道发送一条I/OI/O指令,以给出指令,以给出其所要执行的通道程序的首址和要访问的其所要执行的通道程序的首址和要访问的I/OI/O设备,设备,通道程序接到该指令后,通过执行通道程序便可完成通道程序接到该指令后,通过执行通道程序便可完成CPUCPU
11、指定的指定的I/OI/O任务。任务。 I/OI/O通道控制方式的优点:实现通道控制方式的优点:实现CPUCPU、通道通道和和I/OI/O设备设备三者的并行操作,执行一个通道程序可以完成几批三者的并行操作,执行一个通道程序可以完成几批I/OI/O操作,更有效地提高整个系统的操作,更有效地提高整个系统的资源利用率资源利用率。缓冲管理缓冲管理 缓冲技术:缓冲技术:1.发送请求发送请求发出一段时间发出一段时间后才执行输出传送后才执行输出传送 ; 2.输入请求输入请求发出之前发出之前就执行输入传送。就执行输入传送。 缓冲的引入的作用:缓冲的引入的作用: 1.缓和缓和CPU与与I/O设备设备间速度不匹配的
12、矛盾。间速度不匹配的矛盾。 2.减少对减少对CPU的中断频率,的中断频率, 放宽对放宽对CPU中断响应时间的中断响应时间的限制限制 3.提高提高CPU和和I/O设备设备之间的并行性。之间的并行性。 1位缓冲9.6 Kb/s8位缓冲寄存器送内存9.6 Kb/s8位缓冲寄存器9.6 Kb/s送内存(b)(a)(c)0.1ms0.8ms0.8ms单缓冲单缓冲(Single Buffer)工作区处理 (C )缓冲区传送 (M )输入 (T)I/O 设备(a)T1M1C1T2M2C2T3M3C3T4t(b)用户进程Max(C,T)+M双缓冲双缓冲(Double Buffer)工作区用户进程缓冲区1缓冲区
13、2I/O 设备T1(缓 冲 1)M1C1M2C2M3C3T2(缓 冲 2)T3(缓 冲 3)M4C4T4(缓 冲 4)(a)(b)Max(C,T)缓冲区缓冲区A机B机(a) 单缓冲发送缓冲区接收缓冲区接收缓冲区发送缓冲区A机B机(b) 双缓冲RGGGRG165423NextiNextgRGGGRC165423NextiNextgcurrent双机通信时缓冲区的设置双机通信时缓冲区的设置循环缓冲循环缓冲公用缓冲池公用缓冲池(Buffer Pool)缓冲池的组成:对于既可用于输入又可用于输出的公用缓冲池,缓冲池的组成:对于既可用于输入又可用于输出的公用缓冲池, 其中至少应含有以下三种类型的缓冲区:
14、其中至少应含有以下三种类型的缓冲区: 空空( (闲闲) )缓冲区;缓冲区; 装满输入数据的缓冲区;装满输入数据的缓冲区; 装满输出数据的缓冲区。装满输出数据的缓冲区。 为了管理上的方便,可将相同类型的缓冲区链成一个为了管理上的方便,可将相同类型的缓冲区链成一个 队列,于是可形成以下三个队列:队列,于是可形成以下三个队列: (1)(1)空缓冲队列空缓冲队列emqemq。 (2)(2)输入队列输入队列inqinq。 (3)(3)输出队列输出队列outqoutq。Getbuf过程和过程和Putbuf过程过程 Procedure Getbuf(type) begin Wait(RS(type);Wai
15、t(MS(type); B(number) =Takebuf(type); Signal(MS(type); end Procedure Putbuf(type, number) beginWait(MS(type); Addbuf(type, number); Signal(MS(type); Signal(RS(type); end 缓冲区的工作方式缓冲区的工作方式hinsoutsinhout收容输入提取输出用户程序提取输入收容输出缓冲池I/O软件的设计目标软件的设计目标I/O软件的总目标:软件的总目标: 高效率:确保高效率:确保I/O设备与设备与CPU的并发性。的并发性。 通用性:提供简
16、单抽象清晰和统一的接口。通用性:提供简单抽象清晰和统一的接口。I/O软件的具体目标:软件的具体目标: 与具体设备无关与具体设备无关 统一命名:不同的统一命名:不同的OS命名规则不一样。命名规则不一样。 错误处理:越底层处理越好错误处理:越底层处理越好 缓冲技术缓冲技术 设备的分配和释放设备的分配和释放 I/O控制方式控制方式I/O软件的层次结构软件的层次结构中断处理程序中断处理程序中断程序的功能:中断程序的功能:进程上下文的切换、中断源的测试、读取设备状态和进程上下文的切换、中断源的测试、读取设备状态和修改进程状态。修改进程状态。中断程序的过程:中断程序的过程:唤醒被阻塞的驱动程序唤醒被阻塞的
17、驱动程序保护中断进程的保护中断进程的CPU环境环境转入响应的设备处理程序转入响应的设备处理程序中断处理中断处理恢复被中断的进程现场恢复被中断的进程现场PSW程序状态字PC(N1)程序计数器R0Rn寄存器开始返回用户程序中断服务子例程PSWPC(N1)中断栈TTM线指针YNN1R0Rn中断现场保护示意图中断现场保护示意图 唤醒被阻塞的驱动程序进程对被中断进程的CPU环境进行保护分析中断原因,转入相应的中断处理程序终端中断处理程序打印机中断处理程序磁盘中断处理程序恢复被中断进程的CPU现场返回被中断的进程,继续执行中断请求信号中断处理流程图中断处理流程图设备驱动程序设备驱动程序 设备驱动程序的功能
18、设备驱动程序的功能 : (1) 接收由接收由I/O进程发来的命令和参数,进程发来的命令和参数, 并将命令中的抽并将命令中的抽象要求转换为具体要求象要求转换为具体要求 (2) 检查用户检查用户I/O请求的合法性,了解请求的合法性,了解I/O设备的状态,传设备的状态,传 递有关参递有关参 数,设置设备的工作方式。数,设置设备的工作方式。 (3) 发出发出I/O命令,如果设备空闲,便立即启动命令,如果设备空闲,便立即启动I/O设备去设备去 完成指定完成指定 的的I/O操作;如果设备处于忙碌状态,则将请操作;如果设备处于忙碌状态,则将请 求者的请求块挂求者的请求块挂 在设备队列上等待。在设备队列上等待
19、。 (4) 及时响应由控制器或通道发来的中断请求并进行处及时响应由控制器或通道发来的中断请求并进行处理。理。 (5) 对于设置有通道的计算机系统,驱动程序还应能够根对于设置有通道的计算机系统,驱动程序还应能够根 据用户的据用户的I/O请求,自动地构成通道程序。请求,自动地构成通道程序。 设备驱动程序的特点设备驱动程序的特点 (1) 驱动程序主要是指在请求驱动程序主要是指在请求I/O的进程与设备控制器之间的的进程与设备控制器之间的一个通信和转换程序。一个通信和转换程序。 (2) 驱动程序与设备控制器和驱动程序与设备控制器和I/O设备的硬件特性紧密相关设备的硬件特性紧密相关, 因而对不同类型的设备
20、应配置不同的驱动程序。因而对不同类型的设备应配置不同的驱动程序。 (3) 驱动程序与驱动程序与I/O设备所采用的设备所采用的I/O控制方式紧密相关。控制方式紧密相关。 (4) 由于驱动程序与硬件紧密相关,由于驱动程序与硬件紧密相关, 因而其中的一部分必因而其中的一部分必须须用汇编语言书写。用汇编语言书写。设备驱动程序的处理过程设备驱动程序的处理过程1. 将抽象要求转换为具体要求将抽象要求转换为具体要求 2. 检查检查I/O请求的合法性请求的合法性 3. 读出和检查设备的状态读出和检查设备的状态 4. 传送必要的参数传送必要的参数 5. 工作方式的设置工作方式的设置 6. 启动启动I/O设备设备
21、 Windows驱动程序模型重新定义了驱动程序分层:FDOFIDOPDOFIDO上层过滤层驱动程序上层过滤层驱动程序IRP功能驱动程序功能驱动程序下层过滤层驱动程序下层过滤层驱动程序总线驱动程序总线驱动程序。WDM驱动程序层次结构 该层次结构左边是一个该层次结构左边是一个设备对象堆栈设备对象堆栈。设备对象设备对象是系统是系统 为帮助软件管理硬件而创建的数据结构。一个物理硬件为帮助软件管理硬件而创建的数据结构。一个物理硬件 可以有多个这样的数据结构。可以有多个这样的数据结构。 处于堆栈最底层的设备对象称为处于堆栈最底层的设备对象称为物理设备对象物理设备对象 PDO(Physical Device
22、 Object),代表了设备与总线之,代表了设备与总线之 间的连接。间的连接。 在设备对象堆栈中间的对象称为在设备对象堆栈中间的对象称为功能设备对象功能设备对象 FDO(Functional Device Object),代表了设备的功能。,代表了设备的功能。 在在FDO的上面或下面还会有一些的上面或下面还会有一些过滤器设备对象过滤器设备对象 FIDO(Filter Device Object)。总线驱动程序总线驱动程序负责枚举它的总线,这意味着:发现总负责枚举它的总线,这意味着:发现总线上的全部设备和检测设备何时被添加或修改,并为线上的全部设备和检测设备何时被添加或修改,并为每一个设备创建一
23、个每一个设备创建一个PDO。功能驱动程序功能驱动程序知道如何控制设备的主要功能,它分层知道如何控制设备的主要功能,它分层在总线驱动程序的上面。功能驱动程序创建一个功能在总线驱动程序的上面。功能驱动程序创建一个功能设备对象,放在设备栈中。设备对象,放在设备栈中。对总线上的所有设备,对总线上的所有设备,总线过滤驱动程序总线过滤驱动程序被加在总线被加在总线驱动程序之上;驱动程序之上;设备过滤驱动程序设备过滤驱动程序仅对特定的设备添仅对特定的设备添加。加。上层的过滤驱动程序上层的过滤驱动程序在功能驱动程序之上,在功能驱动程序之上,下层下层过滤驱动程序过滤驱动程序在功能驱动程序之下。这种层次结构可在功能
24、驱动程序之下。这种层次结构可以使以使I/O请求过程更加明了。请求过程更加明了。I/O管理器发送的管理器发送的IRP,先被送到设备堆栈的,先被送到设备堆栈的上层过滤上层过滤器驱动程序器驱动程序(FIDO),它可以根据要求决定它可以根据要求决定IRP的处理方的处理方式,是沿着设备栈继续向下传,或者做另外的处理。式,是沿着设备栈继续向下传,或者做另外的处理。每一层程序都可以决定如何处理每一层程序都可以决定如何处理IRP。高层的驱动程序高层的驱动程序可以把请求划分成更简单的请求并传可以把请求划分成更简单的请求并传递给下层驱动程序。递给下层驱动程序。中间层次的驱动程序中间层次的驱动程序进一步处理请求,将
25、一个进一步处理请求,将一个IRP中中的请求划分为若干个小的请求,并传给下层驱动程序的请求划分为若干个小的请求,并传给下层驱动程序。最后,最底层的驱动程序与硬件打交道。最后,最底层的驱动程序与硬件打交道。我们应该知道,一些我们应该知道,一些IRP在到达总线程序之前,在设在到达总线程序之前,在设备传递过程中可能就被过滤掉了。备传递过程中可能就被过滤掉了。设备独立性软件设备独立性软件执行所有设备的公有操作:执行所有设备的公有操作: 对独立设备的分配与回收;对独立设备的分配与回收; 将逻辑设备名映射为物理设备名,进一步可以找到将逻辑设备名映射为物理设备名,进一步可以找到相应物理设备的驱动程序;相应物理
26、设备的驱动程序; 对设备进行保护,禁止用户直接访问设备;对设备进行保护,禁止用户直接访问设备; 缓冲管理,即对字符设备和块设备的缓冲区进行有缓冲管理,即对字符设备和块设备的缓冲区进行有效的管理,效的管理, 以提高以提高I/O的效率;的效率; 差错控制。由于在差错控制。由于在I/O操作中的绝大多数错操作中的绝大多数错误都与设备无关,故主要由设备驱动程序处理,而设误都与设备无关,故主要由设备驱动程序处理,而设备独立性软件处理备独立性软件处理那些设备驱动程序无法处理的错那些设备驱动程序无法处理的错误。误。向用户层向用户层(或文件层或文件层)软件提供统一接口,无论何种设备,软件提供统一接口,无论何种设
27、备, 它们向它们向用户所提供的接口应该是相同的。用户所提供的接口应该是相同的。 例如,例如, 对各种设备的读操作对各种设备的读操作,在应用程序中都使用,在应用程序中都使用read; 而对各种设备的写操作,也都使用而对各种设备的写操作,也都使用write。 逻辑设备名物理设备名驱动程序入口地址/dev/tty/dev/printer3510242046逻辑设备名/dev/tty/dev/printer系统设备表指针35(a)(b)1) 逻辑设备表逻辑设备表2) LUT的设置问题的设置问题 设设 备备 分分 配配 设备类型 type设备标识符:deviceid设备状态:等待/不等待 忙/闲指向控制
28、器表的指针重复执行次数或时间设备队列的队首指针DCT 1DCT 2DCT n设备控制表集合 设备分配中的数据结构设备分配中的数据结构设备控制表设备控制表DCT(c) 系统设备表SDT控制器标识符:controllerid控制器状态:忙/闲与控制器连接的通道表指针控制器队列的队首指针控制器队列的队尾指针通道标识符:channelid通道状态:忙/闲与通道连接的控制器表首址通道队列的队首指针通道队列的队尾指针(a) 控制器表COCT(b) 通道表CHCT表目1表目i设备类设备标识符DCT驱动程序入口控制器控制表、控制器控制表、 通道控制表和系统设备表通道控制表和系统设备表控制器表、通道表、系统设备
29、表控制器表、通道表、系统设备表 设备分配时应考虑的因素设备分配时应考虑的因素(1) 独享设备:只能分配给一个用户或者进程使用。独享设备:只能分配给一个用户或者进程使用。 (2) 共享设备:可分配给多个用户或者多个进程使用。共享设备:可分配给多个用户或者多个进程使用。 (3) 虚拟设备:可分配给多个用户或者多个进程使用,虚拟设备:可分配给多个用户或者多个进程使用,但需要在实际的物理设备上排序。但需要在实际的物理设备上排序。设备的固有属性设备的固有属性 独占设备的分配程序独占设备的分配程序 1) 分配设备分配设备 2) 分配控制器分配控制器 3) 分配通道分配通道 存在的问题:存在的问题:1)进程
30、以物理设备请求资源)进程以物理设备请求资源2)单通道型,造成瓶颈)单通道型,造成瓶颈基本的设备分配程序:以有基本的设备分配程序:以有I/O通道的系统为例通道的系统为例 设备分配程序的改进设备分配程序的改进 1) 增加设备的独立性:进程采用逻辑名请求增加设备的独立性:进程采用逻辑名请求I/O。 这样,可以从这样,可以从SDT(系统设备表系统设备表)中轮询合适的同中轮询合适的同 类设备。类设备。 2) 考虑多通路情况考虑多通路情况 :对通道和控制器采用轮询的方式:对通道和控制器采用轮询的方式 查找合适的设备。查找合适的设备。磁盘调度磁盘调度 磁盘是一种共享设备,当有多个进程共同请求磁盘时,需要采用
31、合理磁盘是一种共享设备,当有多个进程共同请求磁盘时,需要采用合理 的的磁盘调度磁盘调度方法,保证各个进程对磁盘的平均方法,保证各个进程对磁盘的平均访问时间(寻访问时间(寻 道时间)最少。即磁盘调度的目标是使磁盘的平均寻道时间最少。道时间)最少。即磁盘调度的目标是使磁盘的平均寻道时间最少。 下面介绍几种目前常用的磁盘调度算法下面介绍几种目前常用的磁盘调度算法: : 先来先服务先来先服务( (FCFS,FirstFCFS,First Come First Come First ServerdServerd) ) 它根据进程请求访问磁盘的它根据进程请求访问磁盘的先后次序先后次序进行调度。此算法优点是
32、公平、进行调度。此算法优点是公平、 简单,且每个进程的请求都能依次地得到处理,不会出现某一进程简单,且每个进程的请求都能依次地得到处理,不会出现某一进程 的请求长期得不到满足的情况。但此算法由于未对寻道进行优化,的请求长期得不到满足的情况。但此算法由于未对寻道进行优化, 致使平均寻道时间可能较长。致使平均寻道时间可能较长。故故FCFS算法仅适用于算法仅适用于请求磁盘请求磁盘I/O的进的进 程数目较少程数目较少的场合的场合。 最短寻道时间优先最短寻道时间优先( (SSTF,ShortestSSTF,Shortest Seek Time First) Seek Time First) 其要求访问的
33、磁道与当前磁头所在的磁道距离其要求访问的磁道与当前磁头所在的磁道距离最近最近,以使每次的,以使每次的寻寻 道时间最短道时间最短。但这种算法不能保证平均寻道时间最短。但这种算法不能保证平均寻道时间最短。 扫描扫描(SCAN)(SCAN)算法算法 SCAN算法既能获得较好的寻道性能,又能防止算法既能获得较好的寻道性能,又能防止“饥饿饥饿”现现 象,故被广泛用于象,故被广泛用于大、中、小型机器和网络大、中、小型机器和网络中的磁盘调中的磁盘调 度。该算法不仅考虑到欲访问的磁道与当前磁道间的距度。该算法不仅考虑到欲访问的磁道与当前磁道间的距 离,更离,更优先优先考虑的是磁头当前的考虑的是磁头当前的移动方
34、向移动方向。磁头逐步从。磁头逐步从 外(里)向里(外)移动,直至再无更里面(外面)的外(里)向里(外)移动,直至再无更里面(外面)的 磁道要访问,从而避免了出现磁道要访问,从而避免了出现“饥饿饥饿”现象。现象。 循环扫描循环扫描(CSCAN)(CSCAN)算法算法 SCAN存在这样的问题:当磁头刚从里向外移动而越过存在这样的问题:当磁头刚从里向外移动而越过 了某一磁道时,恰好又有一进程请求访问此磁道,这了某一磁道时,恰好又有一进程请求访问此磁道,这 时,该进程必须等待,待磁头继续从里向外,然后再从时,该进程必须等待,待磁头继续从里向外,然后再从 外向里扫描完所有要访问的磁道后,才处理该进程的请
35、外向里扫描完所有要访问的磁道后,才处理该进程的请 求,致使该进程的请求被大大地推迟。为了减少这种延求,致使该进程的请求被大大地推迟。为了减少这种延 迟,迟,CSCAN算法规定算法规定磁头单向移动磁头单向移动。磁头从最外面被访问的磁道直接移到最里面欲访问的磁头从最外面被访问的磁道直接移到最里面欲访问的磁道磁道(或相反或相反)的寻道时间。的寻道时间。 NStepSCANNStepSCAN算法算法:N步步SCAN算法是将磁盘请求队列分成若干个长度为算法是将磁盘请求队列分成若干个长度为N的子队列,的子队列,磁盘调度将按磁盘调度将按FCFS算法依次处理这些子队列。而每处理一个队算法依次处理这些子队列。而
36、每处理一个队列时又是按列时又是按SCAN算法,对一个队列处理完后,再处理其他队列。算法,对一个队列处理完后,再处理其他队列。当正在处理某子队列时,如果又出现新的磁盘当正在处理某子队列时,如果又出现新的磁盘I/O请求,便将新请求,便将新请求进程放入其他队列,这样就可避免出现粘着现象。请求进程放入其他队列,这样就可避免出现粘着现象。 FSCANFSCAN算法算法: : 一个是由当前所有请求磁盘一个是由当前所有请求磁盘I/O的进程形成的队列,由磁盘调度的进程形成的队列,由磁盘调度按按SCAN算法进行处理。在扫描期间,将新出现的所有请求磁盘算法进行处理。在扫描期间,将新出现的所有请求磁盘I/O的进程,
37、放入另一个等待处理的请求队列。这样,所有的新的进程,放入另一个等待处理的请求队列。这样,所有的新请求都将被推迟到下一次扫描时处理。请求都将被推迟到下一次扫描时处理。(从 100#磁道开始,向磁道号增加方向访问) 被访问的下 一个磁道号 移动距离 (磁道数) 150 50 160 10 184 24 18 166 38 20 39 1 55 16 58 3 90 32 平均寻道长度: 35.8 FCFSSSTFSCANCSCAN磁盘高速缓存磁盘高速缓存 磁盘高速缓存磁盘高速缓存,并非通常意义下的内存和,并非通常意义下的内存和CPU之间所增之间所增 设的一个小容量高速存储器,而是指利用设的一个小容
38、量高速存储器,而是指利用内存内存中的存储中的存储 空间来暂存从磁盘中读出的一系列盘块中的信息。因空间来暂存从磁盘中读出的一系列盘块中的信息。因 此,高速缓存是一组在此,高速缓存是一组在逻辑上属于磁盘逻辑上属于磁盘,而,而物理上是驻物理上是驻 留在内存留在内存中的盘块。中的盘块。 磁盘高速缓存的形式磁盘高速缓存的形式: : 在内存中开辟一个在内存中开辟一个单独的存储空间单独的存储空间来作为磁盘高速缓来作为磁盘高速缓存,其大小是固定的,不会受应用程序多少的影响;存,其大小是固定的,不会受应用程序多少的影响; 把把所有未利用的内存空间所有未利用的内存空间变为一个缓冲池,供请求分变为一个缓冲池,供请求
39、分页系统和磁盘页系统和磁盘I/O时时(作为磁盘高速缓存作为磁盘高速缓存)共享。共享。 系统将数据交付给请求进程的方式:系统将数据交付给请求进程的方式:n 数据交付数据交付:直接将高速缓存中的:直接将高速缓存中的数据数据,传送到请求者,传送到请求者进程的内存工作区中。进程的内存工作区中。n 指针交付指针交付:只将:只将指向指向高速缓存中某区域的高速缓存中某区域的指针指针交付给交付给请求者进程。该方式由于所传送的数据量少,节省了数请求者进程。该方式由于所传送的数据量少,节省了数据从磁盘高速缓存到进程的内存工作区的时间。据从磁盘高速缓存到进程的内存工作区的时间。 磁盘高速缓存置换算法磁盘高速缓存置换
40、算法: : 最近最久未使用算法最近最久未使用算法LRULRU 最近未使用算法最近未使用算法NRUNRU 最少使用算法最少使用算法LFULFU 置换算法的考虑因素置换算法的考虑因素: :访问频率访问频率高速缓存的访问频率高速缓存的访问频率远远低于远远低于存储器的访问频率。存储器的访问频率。可预见性可预见性在高速缓存中的各盘块数据,有哪些数据可能在较长在高速缓存中的各盘块数据,有哪些数据可能在较长时间内不会再被访问,又有哪些数据可能很快就再被时间内不会再被访问,又有哪些数据可能很快就再被访问,会有相当一部分是访问,会有相当一部分是可预知的可预知的。数据的一致性数据的一致性高速缓存一种易失性的存储器,一旦系统发生故障,高速缓存一种易失性的存储器,一旦系统发生故障,存放在高速缓存中的数据将会丢失;而其中有些盘块存放在高速缓存中的数据将会丢失;而其中有些盘块( (如索引结点盘块如索引结点盘块) )中的数据已被修改,但尚未拷回磁中的数据已被修改,但尚未拷回磁盘,因此,当系统发生故障后,可能会造成数据的盘,因此,当系统发生故障后,可能会造成数据的不不一致性一致性。提高磁盘提高磁盘I/OI/O速度的其它方法速度的其它方法: :n 提前读提前读(Read-ahead)(Read-ahead)n 延迟写延迟写n 优化物理块的分布优化物理块的分布n 虚拟盘虚拟盘