1、设备管理与I/O系统,Instructor: Hengming Zou, Ph.D.,In Pursuit of Absolute Simplicity 求于至简,归于永恒,内容提要,1. 设备管理概述 2. I/O硬件特性3. 设备管理的实现技术4. I/O软件的结构5. Windows I/O系统的结构6. Windows I/O系统的核心数据结构7. Windows的I/O处理,设备管理概述,I/O系统是操作系统的一个重要的组成部分,负责管理系统中所有的外部设备在计算机系统中除CPU和内存储外所有的设备和装置统称为计算机外部设备(外围设备、I/O设备)设备管理的意义设备的分类设备管理的任
2、务和功能,设备管理的意义,操作系统复杂和庞大的主要原因是它所管理的资源的庞杂和并发技术的采用,而输入输出设备的庞杂正是操作系统所管理的资源庞杂的主要原因,输入输出设备的速度远低于处理器的速度正是导致并发技术产生的直接原因 所以,I/O系统的性能是操作系统总体性能的重要决定因素、重要表现指标和常见瓶颈之一,因此设备管理在操作系统中具有十分重要的地位,设备管理的意义,设备管理的意义表现在以下几方面:输入输出设备的性能经常成为系统性能的瓶颈,CPU性能越高,输入输出设备性能同CPU性能不匹配的反差也越大。如何解决这一矛盾,而又尽量不降低处理机的性能,是设备管理的一项重要任务输入输出设备千变万化,怎样
3、对它们实现统一的管理,从而方便用户使用是设备管理的又一项重要任务 在应用中,输入输出设备能否及时将各种信息传送给计算机系统,计算机发出的各种命令能否通过输入输出设备及时传送给执行部件,对于实时处理和控制系统而言,是至关重要的用户对输入输出设备的使用必须是安全的。如何保证安全正确地使用设备,也是设备管理的重要任务,设备的分类,按设备的使用特性分类:输入输出设备(狭义)和外存设备按信息组织方式分类:字符设备(character device)和块设备(block device)键盘、终端、打印机等以字符为单位组织和处理信息的设备被称为字符设备;磁盘、磁带等以字符块为单位组织和处理信息的设备被称为块
4、设备,设备的分类,按设备使用可共享性分类:独占设备、共享设备和虚拟设备独占设备是指在任一给定的时刻只能让一个进程使用,即必须保证一个进程对一个具体设备在可能相当长的时间内拥有唯一存取权共享设备是指能够同时让许多进程使用的设备。磁盘是典型的共享设备,多个进程同时在同一磁盘上拥有打开的文件不会带来任何不良后果虚拟设备是指设备本身是独占设备,而经过某种技术处理,可以把它改造成共享设备,同时分配给多个进程,设备的分类,按输入输出对象分类:人机通讯与机机通讯设备按是否交互分类:非交互设备与交互设备机机通讯设备、外存、卡带机等属于非交互设备,终端为交互设备按数据传输率分类:高速设备和低速设备,设备管理的任
5、务和功能,用户对I/O设备的使用要求是方便、高效、安全、正确,相应地,设备管理功能也就应该在计算机硬件结构提供的既定设备范围及其连接模式下,完成为用户对I/O设备的使用过程提供方便、提高效率、提供保护这三方面的任务,设备管理的任务和功能,1方便性方面用户总是希望方便地使用I/O设备,但是I/O设备种类繁多,处理过程非常复杂,涉及到大量I/O细节,如寄存器、中断、控制字符、设备字符集等。如果让用户直接使用设备硬件接口,是十分不便的为了弥补硬件接口给用户带来的不便,操作系统的设备管理部分提供了两个主要的功能:抽象接口设备独立性,设备管理的任务和功能,1方便性方面抽象接口提供简便易用的高级逻辑接口,
6、这些接口由对逻辑设备的逻辑操作组成实现抽象接口到物理接口的转化,即将高级逻辑操作转化为低级物理操作,将逻辑设备和逻辑性质转化为物理设备和物理性质,以便掩盖设备的硬件物理操作和组织的细节,设备管理的任务和功能,1方便性方面设备独立性 设备独立性是指用户在编写程序时所使用的设备与实际设备无关两类设备独立性:1.一个程序应独立于分配给它的某类设备的具体设备。即在用户程序中只指明I/O使用的设备类型即可。如在系统中配备了两台打印机,用户要打印时只要告诉系统要将信息送到打印机即可2.程序要尽可能地与它使用的设备类型无关。即在用户程序中只要指出要输入或输出信息,至如信息I/O使用的设备不需用户指明,设备管
7、理的任务和功能,1方便性方面设备独立性 设备独立性的优点1.方便用户编程2.使用程序运行不受具体的机器环境的限制3.便于程序移植设备独立性的实现把设备与文件统一处理,对于用户来说,并没有设备的概念,设备管理的任务和功能,2效率方面用户永远关心效率:非系统用户关心程序运行效率与操作效率;系统用户关心系统利用率、系统代价、系统工作效率为了提高设备与CPU的效率,引入了大量的技术如中断、缓冲、DMA、通道等等,这些技术不仅需要相应的硬件,还需要相应的软件来配合,才能达到引入这些技术所预期的目标,设备管理的任务和功能,2效率方面操作系统的设备管理功能的第二大任务是采用各种纯软件或与硬件配合的软件技术来
8、提高设备效率和与此相关的系统效率,提供物理I/O设备的共享并优化这些设备的使用,并借助抽象接口使得这些效率优化技术得以由系统在内部实施并对用户透明 操作系统设备管理功能要主要采用了以下技术:设备共享技术 虚拟设备技术 缓冲技术,设备管理的任务和功能,3保护方面用户希望能安全正确地使用设备,这种希望体现为由设备传送或管理的数据应该是安全的,不被破坏和泄密的;对设备拥有所有权的用户,这种希望体现为设备不能被破坏,系统在安全可靠方面的信誉应得到保证操作系统的设备管理功能的另一任务是提供安全保护机制,用于保护设备,尤其是保护由设备传送或管理的数据,I/O硬件特性,I/O系统的结构I/O设备接口I/O设
9、备的控制,I/O系统的结构,I/O设备接口,操作系统不是直接与设备打交道,而是与设备控制器打交道。每个设备控制器都有几个寄存器用来与CPU进行通信,包括控制寄存器、状态寄存器和数据寄存器。通过写入控制寄存器,操作系统可以控制设备发送数据、接收数据、开启或关闭;通过读取状态寄存器,操作系统可以获悉设备的状态,如是否准备好接受一个新的命令;数据寄存器通常作为操作系统可以读写的数据缓冲区,I/O设备的控制,输入输出设备的I/O控制方式有程序直接控制方式、中断控制方式、DMA方式和通道控制方式1程序直接控制方式程序直接控制方式是指由用户进程直接控制内存或CPU和外围设备之间进行信息传送的方式,也称为“
10、忙-等”方式、轮询方式或循环测试方式,这种方式的控制者是用户进程,I/O设备的控制,1程序直接控制方式当用户进程需要从外围设备输入数据时,它通过CPU发出启动设备准备数据的启动命令(通常是把一个启动位为1的控制字写入设备的控制寄存器中),然后,用户进程进入测试等待状态。在等待时间,CPU不断地用一条测试指令检查设备的状态寄存器是否为完成状态(通常是检测状态寄存器的完成位是否为1),而外围设备只有将输入数据送入数据缓冲寄存器之后,才将该寄存器置为完成状态。当CPU检测到设备的状态寄存器为完成状态,则从设备的数据缓冲寄存器读取数据到内存或CPU用户进程需要向输出设备输出数据时,也必须同样发出启动命
11、令和等待设备准备好之后才能输出数据,I/O设备的控制,1程序直接控制方式程序直接控制方式的优点是CPU 和外设的操作能通过状态信息得到同步,而且硬件结构比较简单;其缺点是CPU 效率较低,传输完全在CPU控制下完成,对外部出现的异常事件无实时响应能力程序直接控制方式只适用于那些CPU执行速度较慢,而且外围设备较少的系统,如单片机系统,I/O设备的控制,2中断控制方式中断是一种在发生了一个异常事件时,调用相应处理程序(通常称为中断服务程序)进行服务的过程中断源一旦需要CPU为其服务时,就向CPU发出请求,CPU一般在当前指令执行完,且状态为允许中断的情况下响应该请求。并由硬件自动关中断(防止在保
12、留断点和程序转移过程中又有新的中断请求发生)、保留断点、转到相应的中断服务程序入口处。然后执行中断服务程序,由软件完成中断服务。中断服务程序结束,执行返回指令返回断点,继续执行原程序,I/O设备的控制,2中断控制方式如要采用中断方式进行数据传送,则相应CPU及接口就应具备中断机构,I/O设备的控制,2中断控制方式中断控制方式的优点:CPU与外设在大部分时间内并行工作,提高了计算机的效率具有实时响应能力,可适用于实时控制场合及时处理异常情况,提高计算机的可靠性中断控制方式的局限:用中断方式交换数据时,每处理一次I/O数据交换,都会耗去一定的CPU处理时间,对于一些高速的外围设备,以及成组交换数据
13、的情况,仍然显得速度太慢,I/O设备的控制,3DMA方式DMA是直接内存访问(Direct Memory Access)的缩写,它是一种完全由硬件执行I/O数据交换的工作方式。在这种方式中,DMA控制器(DMAC)从CPU完全接管对总线的控制,数据交换不经过CPU,而直接在内存和I/O设备之间进行采用DMA方式工作时,由DMA控制器向内存发出地址和控制信号,进行地址修改,对传送字的个数计数,并且以中断方式向CPU报告传送操作的结束,I/O设备的控制,3DMA方式DMA方式的传送结构,I/O设备的控制,3DMA方式DMA方式的数据块传送过程可分为三个阶段:传送前预处理;数据传送;传送后处理预处理
14、阶段由CPU执行I/O指令对DMAC进行初始化与启动数据传送阶段由DMAC控制总线进行数传。后处理阶段传送结束,DMAC向CPU发中断请求,报告DMA操作的结束,I/O设备的控制,3DMA方式DMA方式的优点:操作均由硬件电路实现,传输速度快CPU仅在初始化和结束时参与,对数据传送基本上不干预,可以减少大批量数据传输时CPU的开销;CPU与外设并行工作,效率高DMA方式的局限性:在初始化和结束时仍由CPU控制,I/O设备的控制,4通道控制方式通道(channel)是一个特殊功能的处理器,它有自己的指令和程序,可以实现对外围设备的统一管理和外围设备与内存之间的数据传送。引入通道的目的是为了进一步
15、减少数据输入输出对整个系统运行效率的影响与DMA方式相比,通道方式增加了CPU与通道操作的并行能力;增加了通道之间以及同一通道内各设备间的并行操作能力;为用户提供了灵活增加外设的可能性,I/O设备的控制,4通道控制方式一个系统中可以设立三种类型的通道:选择通道数组多路通道字节多路通道,I/O设备的控制,4通道控制方式,设备管理的实现技术,中断技术缓冲技术设备分配技术,中断技术,1中断的基本概念中断是指计算机在执行期间,系统内发生任何非寻常的或非预期的急需处理事件,使得CPU暂时中断当前正在执行的程序而转去执行相应的事件处理程序,待处理完毕后又返回原来被中断处继续执行或调度新的进程执行的过程引起
16、中断发生的事件被称为中断源。中断源向CPU发出的请求中断处理信号称为中断请求,而CPU收到中断请求后转到相应的事件处理程序称为中断响应,中断技术,1中断的基本概念在有些情况下,尽管产生了中断源和发出了中断请求,但CPU内部的处理机状态字PSW的中断允许位已被清除,从而不允许CPU响应中断。这种情况称为禁止中断,或称为关中断。PSW的中断允许位的设置也被称为开中断。开中断和关中断是为了保证某段程序执行的原子性中断屏蔽是指在中断请求产生之后,系统有选择地封锁一部分中断而允许另一部分的中断仍能得到响应,中断技术,2中断的分类与优先级根据系统对中断处理的需要,操作系统一般对中断进行分类并对不同的中断赋
17、予不同的处理优先级,以便在不同的中断同时发生时,按轻重缓急进行处理根据中断源产生的条件,可把中断分为外中断和内中断,中断技术,2中断的分类与优先级中断和陷入的主要区别:陷入通常由处理机正在执行的现行指令引起,而中断则是由与现行指令无关的中断源引起的陷入处理程序提供的服务为当前进程所用,而中断处理程序提供的服务则不是为了当前进程的CPU执行完一条指令之后,下一条指令开始之前响应中断,而在一条指令执行中也可以响应陷入。例如执行指令非法时,尽管被执行的非法指令不能执行结束,但CPU仍可对其进行处理,中断技术,2中断的分类与优先级为了按中断源的轻重缓急处理响应中断,计算机统为不同的中断赋予不同的优先级
18、。为了禁止中断或屏蔽中断,CPU的处理机状态字PSW中也设有相应的优先级。如果中断源的优先级高于PSW的优先级,则CPU响应该中断源的请求,反之,CPU屏蔽该中断源的中断请求各中断源的优先级在系统设计时给定,在系统运行时是固定的。而处理机的优先级则根据执行情况由系统程序动态设定,中断技术,3Windows的中断处理当处理器收到中断请求时,要通知相应设备的驱动程序进行处理。为此,设备驱动程序应该向I/O管理器注册一个ISR,可以通过调用IoConnectInterrupt来实现IoConnectInterrupt初始化一个中断对象,来存放关于中断及其ISR的信息。同时使处理器的中断服务表的相应表
19、项指向该中断对象,中断技术,3Windows的中断处理,缓冲技术,计算机系统中各个部件速度的差异是明显的。在不同时刻,系统各部分的负荷也常常很不均衡虽然中断和通道技术为系统各部分并行工作提供了可能,但是由于中央处理机和外部设备速度不匹配以及工作不均衡,它们的并行程度并不能得到充分发挥缓冲技术是解决这一问题的一种常用的技术,缓冲技术,进程,行式打印机,进程,行式打印机,进程,行式打印机,buffer1,buffer2,Tc1 Tc2,Tc3,Tlpt1 Tlpt2,Tlpt3,Tc1 Tmv1 Tc2 Tmv2 Tc3,Tmv3 Tc4,Tlpt1 Tlpt2,Tlpt3,Tc1 Tmv1 Tc
20、2 Tmv2 Tc3 Tmv3 Tc4 Tmv4,Tlpt1 Tlpt2 Tlpt3,(a),无缓冲存储区,(b),单缓冲,(c),双缓冲,缓冲技术,缓存技术是以空间换取时间,而且它只能在设备使用不均衡时起到平滑作用。如果在相当长的一段时间内,进程提出的输入/输出要求超出了相应设备不间断工作所能完成的总量,那么一旦缓存已全部存放了I/O信息后,多缓存的作用也就基本消失,设备分配技术,在计算机系统中,设备、控制器和通道等资源是有限的,并不是每个进程随时都可以得到这些资源,它首先需要向设备管理程序提出申请,然后由设备管理程序按照一定的分配算法给进程分配必要的资源,设备分配算法的数据结构,设备分配的
21、原则,要充分发挥设备的使用效率避免不合理的分配方式造成死锁、系统工作紊乱等现象使用户在逻辑层面上能够合理方便地使用设备,设备分配的原则,考虑设备的特性和安全性设备的特性是设备本身固有的属性,一般分为独占、共享和虚拟设备从安全性方面考虑,有安全分配方式和不安全分配方式两种,设备分配的原则,设备分配策略通常采用先来先服务(FIFO)和高优先级优先先来先服务,就是当多个进程同时对一个设备提出I/O请求时,系统按照进程提出请求的先后次序,把它们排成一个设备请求队列,并且总是把设备首先分配给排在队首的进程使用高优先级优先,就是给每个进程提出的I/O请求分配一个优先级,在设备请求队列中把优先级高的排在前面
22、,如果优先级相同则按照FIFO的顺序排列。这里的优先级与进程调度中的优先级往往是一致的,这样有助于高优先级的进程优先执行、优先完成,独占设备的分配,独占设备每次只能分配给一个进程使用,这种使用特性隐含着死锁的必要条件,所以在考虑独占设备的分配时,一定要结合有关防止和避免死锁的安全算法用户使用独占设备的活动如下:申请,使用,使用,使用,释放,独占设备的分配,对于申请命令,系统将设备分配给申请者,具体方法如下: 根据申请的设备类型查询系统设备表,找到对应入口 P(Sm) 查对应的设备表,找一空闲设备并分配,独占设备的分配,对于释放命令,系统将设备从占有者手中收回,具体方法如下: 根据释放设备类型查
23、询系统设备表,找到对应入口 查对应的设备表,找到要释放的设备去配 V(Sm),共享设备的分配,共享设备是可由若干个进程同时共享的设备。用户使用独占设备的活动如下:使用,使用,使用与独占型设备不同,用户在使用共享设备时并没有明显的申请和释放活动。但是,在每一个使用命令之前都隐含有一个申请命令,在每一个使用命令之后都隐含有一个释放命令,在此隐含的申请命令和隐含的释放命令之间,执行了一次I/O传输,虚拟设备,系统中的独占设备是有限的,往往不能满足诸多进程的要求,因而会引起大量进程由于等待某些独占设备而阻塞,成为系统中的“瓶颈”;另一方面,申请到独占设备的进程在其整个运行期间虽然占有设备,利用率却常常
24、很低,设备还是经常处于空闲状态,虚拟设备,为了解决上述矛盾,最常用的方法就是用共享设备来模拟独占设备的操作,从而提高系统效率和设备利用率。这种技术就称为虚拟设备技术,实现这一技术的软、硬件系统被称为SPOOLing系统 SPOOLing系统通常分为输入SPOOLing和输出SPOOLing,二者工作原理类似,虚拟设备,输出SPOOLing的基本原理(以常见的共享打印机为例):打印机是一种典型的独占设备,引入SPOOLing技术后,用户的打印请求传递给SPOOLing系统,而并不是真正把打印机分配给用户。SPOOLing系统的输出进程在磁盘上申请一个空闲区,把需要打印的数据传送到里面,再把用户的
25、打印请求挂到打印队列上。如果打印机空闲,就会从打印队列中取出一个请求,再从磁盘上的指定区域取出数据,执行打印操作。由于磁盘是共享的,SPOOLing系统可以随时响应打印请求并把数据缓存起来,这样就把独占设备改造成了共享设备,从而提高了设备的利用率和系统效率,小测验,1()是操作系统中采用的以空间换时间的技术。A、缓冲技术 B、并行技术C、通道技术 D、虚拟存储技术2通过硬件和软件的功能扩充,把原来独占的设备改造成若干用户共享的设备,这种设备称为()。A、存储设备 B、系统设备C、虚拟设备 D、用户设备,小测验,3对于磁盘来说,输入输出操作的信息传送单位为()。A、字节 B、字C、文件 D、块4
26、CPU输出数据的速度远远高于打印机的打印速度,为解决这一矛盾,可采用()。A、并行技术 B、通道技术C、缓冲技术 D、虚拟存储技术,小测验,5通道又称I/O处理机,它用于实现()之间的信息传输。A、主存与外设 B、CPU与外设C、主存与外存 D、CPU与外存6如果I/O设备与存储设备进行数据交换不经过CPU来完成,这种数据交换方式是()。A、中断方式 B、无条件存取方式C、DMA方式 D、程序查询方式,习题,I/O系统在整个操作系统中所起的作用和地位是什么? 在I/O系统中引入缓冲的主要原因是什么? 说明SPOOLing系统的特点以及其工作方式。设备分配算法有哪些?,4.I/O软件的结构,I/
27、O软件的结构,其基本思想是分层构造,即在于把设备管理软件组织成为一系列的层次,其中低层与硬件相关,它把硬件与较高层次的软件隔离开来。而最高层的软件则向应用提供一个友好的,清晰而统一的接口I/O软件一般可以分为四层:中断处理程序设备驱动程序与设备无关的操作系统软用户级软件,设备驱动程序,设备驱动程序是直接同硬件打交道的软件模块。设备驱动程序的任务是接受来自与设备无关的上层软件的抽象请求,进行与设备相关的处理,设备驱动程序,设备驱动程序的功能设备驱动程序主要有以下四个方面的处理工作:向有关的输入输出设备的各种控制器发出控制命令,并且监督它们的正确执行,进行必要的错误处理对各种可能的有关设备排队、挂
28、起、唤醒等操作进行处理执行确定的缓冲区策略进行比寄存器接口级别层次更高的一些特殊处理,设备驱动程序,设备驱动程序的特性设备驱动程序与I/O设备的硬件结构密切联系设备驱动程序中全部是依赖于设备的代码设备驱动程序是操作系统底层中唯一知道各种输入输出设备的控制器细节以及其用途的部分,设备驱动程序,设备驱动程序的结构不同的操作系统对设备驱动程序的结构的要求是不同的。一般在操作系统的相关文档中,都有对设备驱动程序结构方面的统一要求 设备驱动程序的结构同输入输出设备的硬件特性有关,设备驱动程序,设备驱动程序层的内部策略设备驱动程序层的内部策略包括以下几方面 :(1)确定是否发请求(2)确定发什么(3)发布
29、命令(4)发后处理(5)中断时被调用的驱动程序的事后处理,与设备无关的系统软件,设备驱动程序与设备无关的软件之间的界限如何划分,随操作系统的不同而变化。具体划分原则取决于系统的设计者怎样考虑系统与设备的独立性、驱动程序的运行效率等诸多因素的平衡,与设备无关的系统软件,与设备无关I/O软件的功能设备驱动程序的统一接口设备命名设备保护提供一个与设备无关的逻辑块缓冲存储设备的块分配独占设备的分配和释放错误处理,用户空间的I/O软件,大部分I/O软件都包含在操作系统中,但是用户程序仍有一小部分是与库函数连接在一起的,通常的系统调用,包括I/O系统调用,是由库函数实现。例如:countwrite(fd,
30、buffer,nbytes);标准的I/O库包含了许多涉及I/O的过程,它们都是作为用户程序的一部分运行的,I/O软件的层次,5. Windows I/O系统的结构,I/O系统是Windows执行体的组件,主要存在于NTOSKRNL.EXE文件中。它接受I/O请求(来自用户态和核心态的调用程序),并且以不同的形式把它们传送到I/O设备在用户态I/O函数和实际的I/O硬件之间有几个分立的系统组件,包括文件系统驱动程序、过滤器驱动程序和低层设备驱动程序,Windows I/O系统的设计目标,在单处理器或多处理器系统中都可以快速进行I/O处理使用标准的Windows 2000/XP安全机制保护共享的
31、资源满足Microsoft Win32、OS/2和POSIX子系统指定的I/O服务的需要提供服务,使设备驱动程序的开发尽可能地简单,并且允许用高级语言编写驱动程序,Windows I/O系统的设计目标,根据用户的配置或者系统中硬件设备的添加和删除,允许在系统中动态地添加或删除相应的设备驱动程序通过添加驱动程序透明地修改其他驱动程序或设备的行为为包括FAT、CDROM文件系统(CDFS)、UDF(Universal Disk Format)文件系统和Windows 2000/XP文件系统(NTFS)的多种可安排的文件系统提供支持允许整个系统或者单个硬件设备进入和离开低功耗状态,这样可以节约能源,
32、Windows I/O系统组件,一个典型的I/O请求流程,I/O管理器,I/O管理器定义有序的工作框架,在该框架里,I/O请求被提交给设备驱动程序。在Windows中,整个I/O系统是由包驱动的,大多数I/O请求用I/O请求包(IRP)表示,它从一个I/O系统组件移动到另一个I/O系统组件(快速I/O是一个特例,它不使用IRP),I/O管理器,I/O管理器创建代表每个I/O操作的IRP,传递IRP给正确的驱动程序,并且当此I/O操作完成后,处理这个数据包驱动程序接受IRP,执行IRP指定的操作,并且在完成操作后把IRP送回I/O管理器或为下一步的处理而通过I/O管理器把它送到另一个驱动程序,I
33、/O管理器,除了创建并处理IRP以外,I/O管理器还为不同的驱动程序提供了公共的代码,驱动程序调用这些代码来执行它们的I/O处理通过在I/O管理器中合并公共的任务,驱动程序将变得更加简洁和更加紧凑,I/O管理器,I/O管理器也提供灵活的I/O服务,允许环境子系统(Win32和POSIX)执行它们各自的I/O函数。这些服务包括用于异步I/O的高级服务,它们允许开发者建立可升级的高性能的服务器应用程序,I/O管理器,驱动程序呈现的统一的、模块化的接口允许I/O管理器调用任何驱动程序而不需要与它的结构和内部细节有关的任何特殊的知识驱动程序也可以通过I/O管理器相互调用来完成I/O请求的分层的、独立的
34、处理,PnP管理器,由于一个系统可以配置多种外部设备,设备也经常变动和更换,它们都要占有一定的系统资源,彼此间在硬件和软件上可能会产生冲突。因此在系统中要正确地对它们进行配置和资源匹配;当设备撤除、添置和进行系统升级时,配置过程往往是一个困难的过程。为了改变这种状况,出现了PnP 技术,PnP管理器,PnP 技术主要有以下特点:PnP 技术支持I/O设备及部件的自动配置,使用户能够简单方便地使用系统扩充设备PnP 技术减少了由制造商造成的种种用户限制,简化了部件的硬件跳线设置,使I/O附加卡和部件不再具有人工跳线设置电路利用PnP 技术可以在主机板和附加卡上保存系统资源的配置参数和分配状态,有
35、利于系统对整个I/O资源的分配和控制PnP技术支持和兼容各种操作系统平台,具有很强的扩展性和可移植性;PnP技术在一定程度上具有热插入、热拼接功能,PnP管理器,PnP 技术主要有以下特点:PnP管理器为Windows 提供了识别并适应计算机系统硬件配置变化的能力。PnP支持需要硬件、设备驱动程序和操作系统的协同工作才能实现,PnP管理器,为了支持PnP,设备驱动程序必须支持PnP调度例程和添加设备的例程,总线驱动程序必须支持不同类型的PnP请求在系统启动的过程中,PnP管理器向总线驱动程序询问得到不同设备的描述信息,包括设备标识、资源分配需求等,然后PnP管理器就加载相应的设备驱动程序并调用
36、每一个设备驱动程序的添加设备例程,PnP管理器,PnP状态转换,电源管理器,电源管理也需要底层硬件的支持,底层的硬件需要符合高级配置与电源接口ACPI(Advanced Configuration and Power Interface)标准支持电源管理的计算机系统的BIOS必须符合ACPI标准,电源管理器,ACPI为系统和设备定义了不同的能耗状态,目前共有六种,从S0(正常工作)到S5(完全关闭)。每一种状态都有如下指标:电源消耗:计算机系统消耗的能源软件运行恢复:计算机系统回复到正常工作状态时软件能否恢复运行硬件延迟:计算机系统回复到正常工作状态的时间延迟,电源管理器,电源管理器,计算机系
37、统在从S1到S4的状态之间互相转换,转换必须先通过状态S0。从S1到S5的状态转换到S0称作唤醒,从S0转换到S1到S5称作睡眠,电源管理器,电源管理器,Windows 的电源管理策略由两部分组成:电源管理器和设备驱动程序电源管理器是系统电源策略的所有者,整个系统的能耗状态转换由电源管理器决定,并调用相应设备的驱动程序完成。电源管理器根据以下因素决定当前相同的能耗状态:系统活动状况系统电源状况应用程序的关机、休眠请求用户的操作,例如用户按电源按钮控制面板的电源设置,电源管理器,设备驱动程序可以独立地控制设备的能耗状态。在一些情况下,当设备长时间不用时,设备驱动程序就可以减小该设备的能耗设备驱动
38、程序可以自己检测设备的闲置时间,也可以通过电源管理器检测,电源管理器,系统电源管理策略,设备驱动程序,Windows支持多种类型的设备驱动程序和编程环境,在同一种驱动程序中也存在不同的编程环境,具体取决于硬件设备Windows 支持的驱动程序可以分为用户模式驱动程序和核心模式驱动程序两大类,设备驱动程序,核心驱动程序的种类主要分为以下几种:文件系统驱动程序同Windows 的PnP管理器和电源管理器有关的设备驱动程序为Windows NT编写的设备驱动程序Win32子系统显示驱动程序和打印驱动程序符合Windows驱动程序模型的WDM驱动程序,设备驱动程序,WDM驱动程序有三种类型:总线驱动程
39、序管理逻辑的或物理的总线,总线驱动程序需要检测并向PnP管理器通知总线上的设备,并且能够管理电源功能驱动程序管理具体的一种设备,对硬件设备进行的操作都是通过功能驱动程序进行的过滤驱动程序与功能驱动程序协同工作,用于增加或改变功能驱动程序的行为,设备驱动程序,硬件支持驱动程序可以分为以下类型:类驱动程序(class drivers)为某一类设备执行I/O处理,例如磁盘、磁带或光盘端口驱动程序(port drivers)实现了对特定于某一种类型的I/O端口的I/O请求的处理,例如SCSI小端口驱动程序(miniport drivers)把对端口类型的一般的I/O请求映射到适配器类型。例如,一个特定
40、的SCSI适配器,设备驱动程序,用户模式的驱动程序 :虚拟设备驱动程序(VDD)通常用于模拟16位MSDOS应用程序。它们捕获MSDOS应用程序对I/O端口的引用,并将其转化为本机Win32 I/O函数Win32子系统的打印驱动程序将与设备无关的图形请求转换为打印机相关的命令,这些命令再发给核心模式的驱动程序例如并口驱动(Parport.sys)、USB打印机驱动(Usbprint.sys)等,设备驱动程序,文件系统驱动和磁盘驱动的层次:,设备驱动程序,因为所有的驱动程序对于操作系统来说都呈现相同的结构,一个驱动程序可以不经过转换当前的驱动程序或I/O系统,就能容易地被插入到分层结构中,小测验
41、,1( )把应用程序和系统组件连接到各种虚拟的、逻辑的和物理的设备上,且定义了一个支持设备驱动程序的基本构架A、设备驱动程序 B、I/O管理器C、WMI D、PnP管理器2.在Windows 中,所有I/O操作都通过()执行,隐藏了I/O操作目标的实现细节,为应用程序提供了一个统一的到设备的接口界面。A、中断方式 B、虚拟文件C、设备驱动程序 D、 I/O管理器,小测验,3( )为Windows 2000/XP提供了识别并适应计算机系统硬件配置变化的能力。 A、设备驱动程序 B、I/O管理器C、WMI D、PnP管理器4Windows 的电源管理需要底层硬件的支持,底层的硬件需要符合()标准
42、A、PnP B、ACPIC、PCI D、 USB,习题,什么是设备驱动程序?设备驱动程序的主要功能是什么? 说明Windows I/O系统的设计目标和结构特点。 Windows是如何实现对PnP的支持的?什么是IRP,它在Windows I/O系统中起什么作用?,6. Windows I/O系统的核心数据结构,文件对象驱动程序对象设备对象I/O请求包(IRP),文件对象,提供了基于内存的共享物理资源的表示法,文件对象,文件对象,当调用者打开文件或一个设备时,I/O管理器将返回一个文件对象句柄,驱动程序对象,驱动程序对象在系统中代表一个独立的驱动程序,并且为I/O记录每个驱动程序的调度例程的地址
43、(入口点) 当驱动程序被加载到系统中时,I/O管理器将创建一个驱动程序对象,然后它调用驱动程序的初始化例程,该例程把驱动程序的入口点填放到该驱动程序对象中,驱动程序对象,驱动程序对象,DeviceObject 指向一个设备对象链表,每个设备对象代表一个设备。I/O管理器把多个设备对象连接起来并维护这个域DriverExtension 指向一个子结构,该结构只有AddDevice成员可以直接访问。AddDevice是一个指针,它指向驱动程序中创建设备对象的AddDevice例程,驱动程序对象,HardwareDatabase指向一个串,该串为设备的硬件数据库键名。这个注册表键保存着该设备的资源分
44、配信息FastIoDispatch指向一个函数指针表,这些函数是由文件系统和网络驱动程序输出的,驱动程序对象,DriverStartIo指向驱动程序中处理I/O请求的函数DriverUnload指向驱动程序中的清除函数MajorFunction为一个函数指针表,指向存在于驱动程序中的各个IRP处理函数,它定义了I/O请求如何进入驱动程序,驱动程序对象,驱动程序对象,设备对象,设备对象在系统中代表一个物理的、逻辑的或虚拟的设备并描述了它的特征,例如它所需要的缓冲区的对齐方式和它用来保存即将到来的I/O请求包的设备队列的位置 设备对象以DEVICE_OBJECT结构来描述,设备对象,设备对象,Dr
45、iverObject指向与该设备对象相关的驱动程序对象,通常调用IoCreateDevice函数创建该设备对象的驱动程序对象。过滤器驱动程序有时需要用这个指针来寻找被过滤设备的驱动程序对象,然后查看其MajorFunction表项NextDevice指向属于同一个驱动程序的下一个设备对象。这个域把多个设备对象连接起来,起始点就是驱动程序对象中的DeviceObject成员,设备对象,CurrentIrp指向最近发往驱动程序StartIo函数的I/O请求包Flags包含一组标志位,设备对象,Characteristics包含另一组标志位,描述设备的可选特征DeviceExtension指向一个由
46、用户定义的数据结构,驱动程序可以使用该结构保存每个设备实例的信息,一般把该结构称为设备扩展(device extension),设备对象,DeviceType是一个枚举常量,描述设备类型StackSize统计从该设备对象开始向下直到PDO之间的设备对象个数。该域的目的是告诉其他代码,如果把该设备对象的驱动程序作为其IRP的第一发送对象,那么应在这个IRP中创建多少个堆栈单元AlignmentRequirement是一个位掩码。执行DMA传输的设备直接使用内存中的数据缓冲区工作,设备对象,设备对象,驱动程序对象与设备对象的关系,一方面,驱动程序对象通常有多个与它相关的设备对象,因此它利用Devi
47、ceObject指针指向指向一个设备对象列表,该列表代表驱动程序可以控制的物理设备、逻辑设备和虚拟设备另一方面,设备对象反过来指向它自己的驱动程序对象,这样I/O管理器就知道在接收一个I/O请求时应该调用哪个驱动程序。它使用设备对象找到代表服务于该设备驱动程序的驱动程序对象,然后利用在初始请求中提供的功能码来索引驱动程序对象。每个功能码都对应于一个驱动程序的入口点,驱动程序对象与设备对象的关系,驱动程序对象、设备对象、设备扩展之间的关系,I/O请求包(IRP),IRP是I/O系统用来存储处理I/O请求所需信息的地方。当线程调用I/O服务时,I/O管理器就构造一个IRP来表示在整个系统I/O进展中要进行的操作。I/O管理器在IRP中保存一个指向调用者文件对象的指针,