操作系统课件第6章+四五六章作业答案_第1页
操作系统课件第6章+四五六章作业答案_第2页
操作系统课件第6章+四五六章作业答案_第3页
操作系统课件第6章+四五六章作业答案_第4页
操作系统课件第6章+四五六章作业答案_第5页
已阅读5页,还剩106页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第六章 输入/输出系统 第六章第六章 输入输入/输出系统输出系统 6.1 I/O系统的硬件结构系统的硬件结构 6.2 采用通道模型的采用通道模型的I/O系统系统 6.3 I/O系统的软件组织系统的软件组织 6.4 缓冲技术缓冲技术 6.5 磁盘的驱动调度磁盘的驱动调度6.6 设备分配程序设备分配程序6.7 WindowsNT的的I/O系统系统 6.8 Windows 2000/XP 设备管理机制实例分析设备管理机制实例分析第六章 输入/输出系统 I/O系统I/O硬件设备介绍磁盘时钟设备视频控制器RS-232I/O系统的硬件组织I/O系统的软件组织I/O控制方式设备控制器通道模型I/O软件设计目

2、标I/O软件层次结构磁盘调度设备分配程序第六章 输入/输出系统 I/O系统I/O硬件设备介绍硬件设备介绍磁盘时钟设备视频控制器RS-232I/O系统的硬件组织I/O系统的软件组织I/O控制方式设备控制器通道模型第六章 输入/输出系统 I/O设备硬件概览第六章 输入/输出系统 3. 按资源分配角度分类按资源分配角度分类 (1) 独占设备独占设备。一经分配给某进程,在进程释放它之前,。一经分配给某进程,在进程释放它之前,其它设备不能使用。如打印机、纸带读入机等。其它设备不能使用。如打印机、纸带读入机等。 (2) 共享设备共享设备。允许若干进程同时共享的设备。如磁盘。允许若干进程同时共享的设备。如磁

3、盘机。机。(3) 虚拟设备虚拟设备。通过假脱机(。通过假脱机(Spooling)技术把原来的)技术把原来的独占设备改造成可为若干个进程所共享的设备。独占设备改造成可为若干个进程所共享的设备。 第六章 输入/输出系统 4. 按传输数据数量分类按传输数据数量分类 外部设备按传输数据的数量,分为字符设备和块设备。 (1) 字符设备。每次传输数据以字节为单位字节为单位的设备称为字符设备,如打印机、终端、键盘等低速设备。 (2) 块设备。传输以数据块为单位数据块为单位进行的设备称为块设备。 如磁盘、磁带等高速外存储器等。 第六章 输入/输出系统 I/O系统I/O硬件设备介绍硬件设备介绍磁盘磁盘时钟设备视

4、频控制器RS-232I/O系统的硬件组织I/O系统的软件组织I/O控制方式设备控制器通道模型第六章 输入/输出系统 2.2.磁盘结构解析磁盘结构解析第六章 输入/输出系统 磁盘结构解析 cont. 第六章 输入/输出系统 磁盘结构解析 cont.C,H,S第六章 输入/输出系统 表6-1 典型的软盘和硬盘的技术参数 第六章 输入/输出系统 I/O系统I/O硬件设备介绍磁盘时钟设备时钟设备视频控制器RS-232I/O系统的硬件组织I/O系统的软件组织I/O控制方式设备控制器通道模型第六章 输入/输出系统 2. 时钟时钟 晶振每个脉冲减少一次计数器使用保持寄存器装载计数器图图 6.3 可编程时钟可

5、编程时钟 可编程时钟的优点是它的中断频率可由软件控制。 如果使用振荡频率为1 MHz的晶体,那么计数器每一微秒接收到一个脉冲, 对于16位的寄存器, 中断可编程为按 1s至 65536s 的间隔发生。时钟采用民用电产生固定频率的震荡采用晶振RC电路第六章 输入/输出系统 思考题:对于震荡频率为1MHz的晶振,要产生1s的时钟中断,如果用32位计数器,该计数器的值应该设置多大?第六章 输入/输出系统 时钟硬件所做的工作仅仅是按给定的时间间隔产生中断, 其它和时间有关的工作必须由软件(时钟驱动程序)来做。 时钟软件的任务包括: 维护日期和时间; 防止进程运行时间超过允许界限; 对CPU使用进行记帐

6、; 处理用户进程提出的时间闹钟系统调用; 对系统某些部分提供监视定时器; 支持直方图监视和统计信息搜集。 第六章 输入/输出系统 3. 终端终端(1) 存储映像终端。 图 6.4 存储映像终端直接写入视频RAM CPU存储器并行口总线视频 RAM卡视频控制器监视器模拟视频信号(例如 16 MHz)键盘第六章 输入/输出系统 视频RAM卡和监视器像素(Pixel):像素的显示:。字符的显示:需要知道字符的像素矩阵,也就是字符的“位模”。 不同的字符有不同的位模,这些位模通常不会变化, 因此保存在视频ROM中。行的显示:一行显示80个字符,每个字符被划分为9*14个像素 (包括字符间隔)。每次只显

7、示一行扫描线。大家计算一下,要显示一行字符,需要花费多大的视频RAM空间?4*6矩阵9*5矩阵第六章 输入/输出系统 (2) RS-232终端。 图 6.5 RS-232终端与计算机通信 CPU存储器接口卡RS-232总线UART计算机UART终端接收线传输线UART:Universal Asynchronous Receiver Transmitter第六章 输入/输出系统 I/O系统I/O硬件设备介绍磁盘时钟设备视频控制器RS-232I/O系统的硬件组织系统的硬件组织I/O系统的软件组织I/O控制方式控制方式设备控制器通道模型第六章 输入/输出系统 6.1.3 I/O系统的硬件组织系统的硬

8、件组织 1. I/O控制方式控制方式 (1) 循环I/O测试方式。程序通过in, out 指令直接控制I/O设备, 进行数据传输。 (2) 程序中断I/O方式。 I/O操作仍然由CPU控制,一次只能传输 一个字或字符。外设不能直接访问内存。(3) DMA方式。(4) 通道方式。 第六章 输入/输出系统 图 6.7 DMA方式下的数据传输 CPU内存计数系统总线内存地址计数磁盘控制器驱动器缓冲器DMA寄存器第六章 输入/输出系统 采用DMA方式的数据传输处理过程如下: 当进程要求设备输入数据时,CPU把准备存放输入数据的内存始址及要传输的字节数分别送入DMA控制器中的内存地址寄存器和传送字节计数

9、器;另外,还要把控制/状态寄存器中的中断允许位和启动位置1,从而启动设备,开始数据输入。 发出数据输入要求的进程进入阻塞状态, 进程调度程序调度其它进程占有CPU。 输入设备不断地挪用不断地挪用CPU工作周期工作周期, 将数据从内部缓冲区源源不断地送入内存,直至所要求的字节数全部传送完毕。 DMA控制器在传输完成时通过中断请求线发出中断信号, CPU接到中断信号后转中断处理程序进行相应处理。 中断处理结束后, CPU返回被中断的进程或去运行重新被调度的进程。 第六章 输入/输出系统 (3) 设备控制器图 6.8 设备控制器的组成 数据寄存器控制/状态寄存器CPU与控制器接口数据线地址线控制线I

10、/O逻辑控制器与设备接口1控制器与设备接口i数据状态控制数据状态控制控制器与设备接口用于存放从CPU送来的数据/从设备产生的数据用于存放从CPU送来的控制信息/从设备产生的状态信息第六章 输入/输出系统 I/O系统I/O硬件设备介绍磁盘时钟设备视频控制器RS-232I/O系统的硬件组织I/O系统的软件组织I/O控制方式设备控制器通道模型通道模型第六章 输入/输出系统 6.2 采用通道模型的采用通道模型的I/O系统系统 6.2.1 通道类型通道类型 1.字节多路通道字节多路通道(Byte Multiplexor Channel)2. 选择通道第六章 输入/输出系统 IBM 370 的I/O结构第

11、六章 输入/输出系统 6.2.4 CPU和通道间的通讯和通道间的通讯 1. 输入输入/输出指令输出指令 例如, 某系统中输入输出类指令主要有: SIO, TIO, HIO, TCH。 所有I/O指令都具有如下格式: 操作码 B1 D1 由(B1)+D1形成的地址指出通道号和设备号的存放单元,该单元的内容为: 通道号设备号第六章 输入/输出系统 SIO(START I/O):用于启动指定通道和设备开始工作,SIO指令发出后,根据通道和设备状态建立结果特征,即条件码。 CPU根据执行结果建立的条件码得知此次启动是否成功,再确定下一步的动作。 TIO(TEST I/O):用以检查I/O操作是否完成,

12、建立相应的条件码。 HIO(HALT I/O):强行停止通道和I/O设备正在执行的操作。 TCH(TEST CHANNEL):测试通道,根据对通道测试的结果建立相应的条件码。 第六章 输入/输出系统 2. CPU和通道间的通讯和通道间的通讯 中央处理机用户进程操作系统进程 i系统调用(I/O 请求)保护进程i的现场组织通道程序存CAW 到固定单元执行 SIO 指令检查条件码启动 成功进程i阻塞重新调度进程j运行进程 j中断进程j保护现场分析中断事件处理I/O中断激活进程i重新调度通道判断状态形成条件码执行通道程序控制设备操作执行情况登记在CSW 中出现中断事件CSW 送固定单元通道号、设备号送

13、入特定寄存器设备和设备控制器执行规定操作图 6.11 CPU启动通道的工作流程 第六章 输入/输出系统 通道I/O主要过程的时间关系示意图第六章 输入/输出系统 I/O系统I/O硬件设备介绍磁盘时钟设备视频控制器RS-232I/O系统的硬件组织I/O系统的软件组织I/O控制方式设备控制器通道模型I/O软件设计目标I/O软件层次结构磁盘调度设备分配程序第六章 输入/输出系统 6.3 I/O系统的软件组织系统的软件组织 6.3.1 I/O软件设计的目标软件设计的目标 p 设备无关性设备无关性:使程序员写出的软件无需任何修改便能读出软盘、硬盘以及CD-ROM等不同设备上的文件, 而与具体设备无关。不

14、同设备之间的差异由操作系统去处理,操作系统会调用不同的设备驱动程序来真正地将输入数据写到输出设备上。p 错误处理错误处理:错误应尽可能在接近硬件的地方处理。p 同步同步/异步传输异步传输:p必须能处理独占设备和共享设备的必须能处理独占设备和共享设备的I/O操作操作。第六章 输入/输出系统 6.3.6 I/O系统软件的层次结构系统软件的层次结构 图 6.12 I/O系统的层次结构 用户进程设备无关软件设备驱动程序中断处理程序硬件层次I/O应答I/O功能进行I/O调用; 格式化I/O;Spooling命名,保护,阻塞,缓冲,分配建立设备寄存器;检查状态当I/O结束时,唤醒驱动程序执行I/O操作I/

15、O请 求第六章 输入/输出系统 用户进程用户进程count=read(fd, buffer, nbytes)if(count= =nbytes).唤醒用户进程继续执行唤醒用户进程继续执行设备无关软件设备无关软件通过fd找到对应的文件file结构和数据缓冲区,并在缓冲区中查看数据;若没有数据,则调用驱动程序读数据。count=设备驱动程序设备驱动程序实施设备读控制所需的一系列操作硬件硬件 磁盘设备控制器 读取数据完毕中断处理程序第六章 输入/输出系统 I/O请求处理过程系统功能调用第六章 输入/输出系统 6.4 缓缓 冲冲 技技 术术 6.4.1 单缓冲单缓冲 图 6.13 无缓冲与单缓冲(a)

16、 无缓冲;(b) 单缓冲 用户进程操作系统I/O 设备(a)用户进程操作系统I/O 设备(b)第六章 输入/输出系统 单缓冲工作示意图在单缓冲技术中CPU和外设轮流使用一个缓冲。每当一个用户进程发出一个I/O请求时,OS便在主存中为之分配一个缓冲区。图7.10显示了单缓冲的工作过程,处理一块数据时间:Max(C,T)+M 。用户区缓冲区输入T传送MI/O设备操作系统用户进程计算C第六章 输入/输出系统 6.4.2 双缓冲双缓冲 图 6.14 双缓冲 用户进程I/O 设备AB第六章 输入/输出系统 双缓冲工作过程示意图双缓冲工作方式的基本方法是在设备输入时,先将数据输入到缓冲区A,装满后便转向缓

17、冲区B。此时操作系统可以从缓冲区A中提取数据传送到用户区,最后由CPU对数据进行计算。其工作过程如下图所示。系统处理一块数据的处理时间可粗略地认为是MAX(C,T)。若CT,可使块设备连续输入;若CT,可使CPU不必等待设备输入。也即采用双缓冲区,CPU和外设都可以连续处理而无需等待对方。但是,要求CPU和外设的速度相近。缓冲区A用户区输入T传送M操作系统用户进程计算C缓冲区BI/O设备第六章 输入/输出系统 6.4.3 缓冲池缓冲池 1. 缓冲池的组成缓冲池的组成 对于既可用于输入又可用于输出的公用缓冲池, 其中至少应包含以下三种类型的缓冲区: 空闲缓冲区; 装满输入数据的缓冲区; 装满输出

18、数据的缓冲区。为了管理方便,可将相同类型的缓冲区链成一个队列。于是,可形成以下三个队列: (1) 空缓冲区队列emq: 由空缓冲区所链成的队列; (2) 输入队列inq: 由装满输入数据的缓冲区所链成的队列;(3) 输出队列outq: 由装满输出数据的缓冲区所链成的队列。 第六章 输入/输出系统 除了上述三个队列外,还应具有四种工作缓冲区: (1) 用于收容输入数据的工作缓冲区; (2) 用于提取输入数据的工作缓冲区; (3) 用于收容输出数据的工作缓冲区; (4)用于提取输出数据的工作缓冲区。 第六章 输入/输出系统 2. 缓冲池管理的基本操作缓冲池管理的基本操作 对缓冲池管理提供两个基本操

19、作(过程): (1) getbuf(type):用于从type所指定的队列的队首, 摘下一个缓冲区; (2) putbuf(type,number):用于将用参数number所指示的缓冲区, 挂在type队列上。 第六章 输入/输出系统 3. 缓冲池的工作方式缓冲池的工作方式 图 6.15 缓冲池的工作方式 收容输入hinsout提取输出sinhout缓冲池收容输出提取输入用户程序第六章 输入/输出系统 6.4.4 预先读与延迟写预先读与延迟写 1. 预先读预先读 操作系统读块设备时,一般通过同步方式把一指定的数据块读入缓冲区,此时用户进程不得不进入阻塞状态,等待数据传输的结束。为了加快进程的

20、推进速度,提高CPU和块设备工作的并行程度,最好在使用某一块之前,用异步方式提早把它读入缓冲区。当用户进程实际需要该块数据时,可以立即从缓冲区取走而无需等待。 这种技术称为预先读。 第六章 输入/输出系统 2. 延迟写延迟写 当块设备进行输出时,如果某一缓冲区只写了一部分,则不要急于把该缓冲区的内容写到块设备上,而是把写块操作推迟到某个适当的时机进行。那么什么是适当的时机呢?一般有两个:其一是延迟写的缓冲区被写满时,其二是该缓冲区被重新分配时。 注意,文件关闭时缓冲区被强行物理写入块设备。第六章 输入/输出系统 I/O系统I/O硬件设备介绍磁盘时钟设备视频控制器RS-232I/O系统的硬件组织

21、I/O系统的软件组织I/O控制方式设备控制器通道模型I/O软件设计目标I/O软件层次结构磁盘调度磁盘调度设备分配程序第六章 输入/输出系统 6.5 磁盘的驱动调度磁盘的驱动调度 磁盘的驱动调度是先进行移臂(移动存取臂)调度,再进行旋转调度。例如,某一时刻对磁盘的输入/输出请求序列是: 柱面(CC) 磁道(HH) 物理记录R 7 4 1 7 4 8 7 4 5 40 6 4 2 7 7 第六章 输入/输出系统 进一步考查 7 号柱面上的三个输入/输出请求。 按上述次序,磁盘需旋转近两周才能完成访问。若将输入/输出请求按照下列的次序完成访问: 柱面(CC) 磁道(HH) 物理记录R 7 4 1 7

22、 4 5 7 4 8 第六章 输入/输出系统 移臂调度算法有: (1) 先来先服务算法(FCFS)。先来先服务调度算法是最简单的一种方法,它按照输入/输出请求到达的顺序, 逐一完成访问请求。 (2) 最短查找时间优先法(SSTF)。这种算法总是先完成距当前存取臂距离最近的柱面上的输入/输出请求。 (3) 扫描法(SCAN)。由于请求序列具有动态性质,所以可采用扫描法。存取臂从磁盘的一端出发, 向另一端移动,遇到需要访问的柱面就完成访问请求,直至到达磁盘的另一端。到达另一端后,存取臂移动方向就倒转过来,继续完成这一方向上的访问请求。 第六章 输入/输出系统 图 6.16 电梯调度算法流程 同当前

23、柱面相同?现在是向里移?按最佳物理记录存取有比当前柱面号小的请求?有比当前柱面号大的请求?A改变存取臂方向选择柱面号最 大 者选择柱面号最 小 者BYYNNNNNY有存取请求?执行存取B改变存取臂方向A移臂到指定柱面登记当前位置电梯调度入口结束YY第六章 输入/输出系统 I/O系统I/O硬件设备介绍磁盘时钟设备视频控制器RS-232I/O系统的硬件组织I/O系统的软件组织I/O控制方式设备控制器通道模型I/O软件设计目标I/O软件层次结构设备分配程序设备分配程序磁盘调度第六章 输入/输出系统 6.6 设备分配程序设备分配程序 6.6.1 设备分配的数据结构设备分配的数据结构 在配置有通道的计算

24、机系统中,设备分配程序至少应解决以下三个问题: (1) 是否有能用来为I/O请求提供的通路?(2) 是否有一条以上的通路可用?(3) 如果当前尚无通路可用, 那么通路何时才能空闲? 第六章 输入/输出系统 图 6.17 设备管理中的三种控制块 第六章 输入/输出系统 图 6.18 UCB, CUCB, CCB间的连接间的连接与此控制器相连的通道表0设备 E的 U CB控制器C的 CU CB与此控制器相连的通道表控制器D 的 CU CB通道 A 的 CCB通道 B的 CCB0与此设备相连的控制器表第六章 输入/输出系统 设备 E的 UCB正在使用该设备的进程等待该设备的进程表PCBCC-PCB0

25、BB-PCBAA -PCB图图 6.19 UCB和PCB的连接 第六章 输入/输出系统 图 6.20 系统设备表与UCB的关系 CARDUCB始址PRINTUCB始址MTUCB始址DISCUCB始址MT的 UCB集合SDTUCB(T00)UCB(T01)UCB(T02)UCB(T)第六章 输入/输出系统 对于所请求的I/O设备,根据上述的查找方法,可能出现三种情况: (1) 对于所请求的I/O设备, 仅有一条通路可用, 例如: 通道B控制器C设备E。 (2) 对于所请求的I/O设备,可以找到一条以上的可用通路, 例如上例中,最多可找出四条可用通路: 通道A控制器C设备E通道A控制器D设备E通道

26、B控制器C设备E通道B控制器D设备E (3) 对于所请求的I/O设备, 没有一条可用的通路。 第六章 输入/输出系统 6.6.2 I/O调度程序调度程序 在多进程的系统中,由于进程数多于设备数,就必然要引起进程对资源的争夺。为使系统有条不紊地工作,系统必须具有一套合理的设备分配原则。 这些原则与下述的四个因素有关: (1 1)I/O设备的固有属性 (2 2) I/O设备的分配算法 先请求先服务。先请求先服务。 优先级高者优先优先级高者优先。 (3 3) 设备分配的安全性 (4 4) 与设备的无关性 不能采用时间片轮转法!第六章 输入/输出系统 6.6.3 设备分配的实施设备分配的实施 1. 单

27、通路单通路I/O系统的设备分配系统的设备分配在单通路I/O系统中, 按如下步骤实施设备分配:(1) 分配设备。 (2) 分配控制器。 (3) 分配通道。 第六章 输入/输出系统 2. 多通路多通路I/O系统的设备分配系统的设备分配 假定某进程n向系统提出I/O请求,要求为它分配一台I/O设备。于是系统可选取该类设备中的任何一台设备分配给该进程。其步骤如下: (1) 根据要求I/O的进程n所提供的设备类型, 检索SDT表,找到第一个该类物理设备的UCB,由状态信息可知其忙闲情况。若忙, 则检查第二个物理设备的UCB。若该类型的全部设备都处于忙碌状态, 表明该类设备已分配完毕。进程n的此次I/O请

28、求无法满足, 只好把进程n插入到等待该类设备的队列中。 只要在该类设备中有一个空闲设备,系统便可对其计算分配该设备给进程n的安全性。 若安全,则把设备分配给进程n,否则将其插入该类设备的等待队列。 第六章 输入/输出系统 (2) 当系统把第i个设备分配给进程n后,便可通过检查与此设备相连的第一个CUCB,而得知该控制器是否忙碌;若忙, 再检查第二个CUCB表。若与此设备相连的所有的控制器都忙,则表明无控制器可分配给设备i。只要设备i不是该类设备中的最后一个,便可返回到步骤(1),试图再找下一个空闲设备;否则,仍将该进程插入控制器等待队列中。 第六章 输入/输出系统 (3) 若有空闲的控制器,便

29、可进一步检查与此控制器相连的第一个通道是否忙碌。若忙,再查看第二个CCB表,若与此控制器相连的全部通道都忙,表明无通道可分配给控制器j。只要控制器j不是该设备i的最后一个控制器,便返回到步骤(2),试图找出一个空闲的控制器,否则,将该进程插入通道等待队列。 若有空闲通道可用,则此次设备分配成功,将相应的设备、控制器和通道分配给进程n,接着便可启动I/O设备,开始信息传送。 多通路I/O系统设备分配的流程示于图 6.21。 第六章 输入/输出系统 图 6.21 设备分配流程图 从SDT查该类设备的UC B始址检查UC B状态 忙?安全?分配设备i 设备i 最后?控制器j最后?最后一个?12NYN

30、YNYNNY为进程分配一台物理设备设备等待链查找C UC B 最后一个?Y1控制器等待链Y2NY通道等待链分配结束N 忙?分配通道k分配控制器j查找C C B 忙? 最后一个?NYY第六章 输入/输出系统 图 6.22 I/O系统概貌 1. I/O系统概貌系统概貌 6.7.1 I/O系统的结构系统的结构 6.7 Windows NT的的I/O系统系统 第六章 输入/输出系统 NT执行体的I/O系统接收用户态和核心态进程的I/O请求, 以不同的方式传送到I/O设备。I/O系统由一组负责处理各种设备的输入/输出部件构成。 这些部件有: (1) I/O管理程序; (2) 文件系统; (3) 缓冲存储

31、管理器(Cache Manager); (4) 设备驱动程序(Device Driver); (5) 网络转发程序(NetWork Redirector)和网络服务程序(Network Server)。 第六章 输入/输出系统 2. I/O管理程序管理程序 I/O管理程序建立了NT执行体的I/O模型,它实现与设备无关的输入/输出,即它并不进行实际的I/O处理。它的主要工作是建立一个代表I/O操作的I/O请求包IRP(I/O Request Packet),把IRP传送给适当的驱动程序并在I/O完成后处理其结果,最后撤消IRP。 与此相反,驱动程序接收IRP,执行IRP规定的操作,并在完成后将I

32、RP传回I/O管理程序或通过驱动程序再传到另一驱动程序, 以求进一步的处理。 I/O系统采用包驱动方式,每个I/O请求都用一个I/O请求包来表达。每个IRP是一个数据结构,用以控制在每一操作步骤上的I/O操作的处理。 第六章 输入/输出系统 3. 虚拟文件虚拟文件 除了I/O管理程序,该结构中还有四类驱动程序:文件系统、缓冲存储管理程序、 设备驱动程序、网络转发程序。要把这四类功能、特性均不相同的部件组合在一起,并建立一个一体化的统一系统,必须进行高层的抽象,建立一个统一的逻辑模型。 NT建立的逻辑模型吸收了UNIX I/O系统的概念,认为“所有的读写数据都看成是直接送往虚拟文件的字节流”。虚

33、拟文件用文件描述符表示, 处理虚拟文件就像处理一个真正的文件。由操作系统判定这个虚拟文件究竟是设备、管道、网络还是磁盘上的真正文件。 第六章 输入/输出系统 图 6.23 打开一个文件对象 系统服务对象管理程序安全性参考监视程序进程管理程序本地过程调用功能虚拟内存管理程序文件系统高速缓冲管理程序设备驱动程序网络驱动程序I/O 管理程序 创建文件对象 返回对象句柄内核Win32DLLCRuntimeDLLWin32应 用 程 序 fp fopen(D:myfile.dat,r) CreateFile(D:myfile.dat, ) 返 回 文 件 句 柄 NtCreateFile(D:myfil

34、e.dat, )用户态核心态Win32子 系 统第六章 输入/输出系统 6.7.2 驱动程序模型驱动程序模型 每一个驱动程序都由以下标准成套(或组合)组成: (1) 一个初始化程序; (2) 一组调度程序; (3) 一个启动I/O的程序; (4) 一个中断服务程序; (5) 一个中断服务DPC(延迟过程调用)程序; (6) 一个完成例程; (7) 一个撤消I/O例程; (8) 一个卸载例程; (9) 一个出错记录例程。 第六章 输入/输出系统 6.7.3 同步同步I/O操作与异步操作与异步I/O操作操作 图图 6.24 同步同步I/O操作操作 应用程序WriteFile(file_handle

35、,data, )Win32子系统调用NT写文件服务I/O管理器检查参数,建立 IRP调用设备驱动程序设备驱动程序I/O对设备排队执 行 I/O转换中断服务设备处理中断完成IRP返回核心态用户态返回数据(等待服务完成)ReadFile(file_handle, data, )时间第六章 输入/输出系统 同步I/O操作过程可归纳如下: (1) 按用户要求,I/O管理程序为之形成IRP, 并把它传送给驱动程序, 由驱动程序完成I/O操作。 (2) 设备完成I/O操作后,发中断请求,设备驱动程序中的中断处理程序进行相应中断处理。 (3) I/O管理程序完成I/O请求。 在大多数操作系统中,同步I/O是

36、标准的,Windows NT除了提供同步I/O外还提供异步I/O,允许子系统选用同步I/O或异步I/O, 并根据它的应用程序接口操作的不同,为客户应用程序提供不同类型的I/O。 第六章 输入/输出系统 图 6.25 异步I/O 应用程序WriteFile(file_handle,data, overlapped)Win32子系统调用NT写文件服务I/O管理程序检查参数,建立 IRP调用设备驱动程序设备驱动程序I/O对设备排队执 行 I/O转换中断服务设备处理中断完成IRP设备文件句柄为有信号状态核心态用户态(执行其它任务)ReadFile(file_handle,data, overlappe

37、d)时间返回返回返回I/O挂起状态Wait(file_handle)(等待结束)第六章 输入/输出系统 6.8 Windows 2000/XP 设备管理机制实例分析 6.8.1 Windosw 2000/XP输入/输出系统的体系结构 传统上认为,输入/输出(I/O)系统是操作系统设计中最难规范化的领域,因为I/O设备五花八门、种类繁杂,小到传感器、鼠标,大到磁盘、磁带、绘图仪等等,它们的性能截然不同。总之,其数据格式、数据组织到使用方法都有很大差别。如何规范化设计,这对操作系统设计也是需要研究的。第六章 输入/输出系统 Windows 2000/XP操作系统采用和强调了软件工程中抽象的原则,在

38、设计中全力找出各种事务的共性,用一致的模型、方法和界面来使其规范化,如用客户/服务器模型来规范各个用户进程之间的关系。 Windows 2000/XP 的I/O系统体系结构如图6.26所示,它由几个可执行模块和大量设备驱动程序组成。 通过这张图我们可以看到,Windows 2000的I/O体系的设计使用了分层结构,这有利于实现其平台无关性,也为其他目标的实现带来了便利。 第六章 输入/输出系统 核心态安装组件安装组件用户态.inf.cat注册表执行体其他接口ACPI硬件抽象层HAL应用程序WIN32系统服务WMI服务用户模式即插即用管理器安装组件WDM WMI 例程即插即用管理器电源管理器I/

39、O管理器即插即用接口电源管理器接口I/O接口WDM接口PC卡USBPCIWDM即插即用总线驱动技术WDM设备驱动程序Windows 2000即插即用驱动程序图6.26 Windows 2000/XP的I/O系统体系结构第六章 输入/输出系统 6.8.2 核心态模块 大部分I/O操作并不会涉及所有的组件,一个典型的I/O操作从应用程序调用一个与I/O操作有关的函数开始,通常会涉及I/O管理器、一个或多个设备驱动程序以及硬件抽象层。I/O系统相关的核心态模块的主要功能如下。第六章 输入/输出系统 I/O管理器:把应用程序和系统组件连接到各种虚拟的、逻辑的和物理的设备上,并定义了一个支持设备驱动程序

40、的基本构架,负责驱动I/O请求的处理,为设备驱动程序提供核心服务。它把用户态的读写转化为I/O请求包IRP。第六章 输入/输出系统 即插即用管理器:通过与I/O管理器和总线驱动程序的协同工作来检测硬件资源的分配,并检测相应硬件设备的添加和删除。 电源管理器:通过与I/O管理器的协调工作,来检测整个系统和单个硬件设备,完成不同电源状态的转换。 WMI支持例程:也叫做Windows驱动程序模型 WDM(Windows Driver Model)的提供者,运行驱动程序使用这些支持例程作为媒介,与用户态运行的WMI服务通信。第六章 输入/输出系统 设备驱动程序:为某种类型的设备提供一个I/O接口。设备

41、驱动程序从I/O管理器接收命令,当处理完毕后通知I/O管理器。设备驱动程序之间的协同工作也通过I/O管理器进行。 即插即用组件:用于控制和配置设备的用户态API。 即插即用WDM接口:I/O系统为驱动程序提供了分层结构,这一结构包括WDM驱动程序、驱动程序层和设备对象。第六章 输入/输出系统 注册表:存储基本硬件、驱动程序的初始化和配置信息的数据库。 硬件抽象层:I/O访问例程把设备驱动程序与多种多样的硬件平台隔离开来,使它们在给定的体系结构中是二进制可移植的,并在Windows 2000/XP支持的硬件体系结构中是源代码可移植的。第六章 输入/输出系统 HAL I/O服务例程核心设备驱动程序

42、I/O管理器I/O系统服务API(NtXXX)用户模式API驱动程序支持例程图6.27 一个典型的I/O请求流程第六章 输入/输出系统 6.8.3 输入/输出系统的数据结构 1文件对象 文件对象提供了基于内存的共享物理资源的表示法(除了被命名的管道和邮箱外,它们虽然是基于内存的但不是物理的)。在Windows 2000/XP的I/O系统中,文件对象也代表这些资源。当调用者打开文件或单一设备时,I/O管理器将为文件对象返回一个句柄。文件对象的主要属性如表6-2所示。第六章 输入/输出系统 表6-2 文件对象属性属 性目 的文件名标识文件对象指向的物理文件字节偏移量在文件中标识当前位置(只对同步I

43、/O有效)共享模式表示当调用者正在使用文件时,其他调用者是否可以打开文件进行读、写操作或删除操作指向设备对象的指针表示文件在其上驻留的设备类型指向卷参数块的指针表示文件在其上驻留的卷或分区指向区域对象的指针描述一个映射文件的根结构指向专用高速缓存映射的指针表示文件的哪一部分由高速缓存管理器管理,以及它们驻留在高速缓存的什么地方第六章 输入/输出系统 图6.29说明打开一个文件时系统所发生的情况。在这个实例中,C程序调用库函数fopen,由它去调用WIN32的CreatFile函数。然后由系统DLL在NTDLL.DLL中调用本地NTCreatFile函数,在NTDLL.DLL中的例程包含引发到核

44、心态系统服务调度程序转换适当的指令。最后,系统服务调度程序在NTOSKRNL.EXE中调用真正的NTCreatFile例程。第六章 输入/输出系统 用户态I/O管理器对象管理器安全引用监视器本地过程调用工具核心WIN32应用子程序运行时的DLL3.NTCreateFile(D:myfile.dat,)4.创建文件对象虚拟内存管理器文件系统高速缓存管理器设备驱动程序网络驱动程序5.返回对象句柄系统服务核心态2.CreateFile(D:myfile.dat,)1.fpfopen(D:myfile.dat,r)WIN32 DLL6.返回文件句柄图6.29 打开一个文件对象的过程第六章 输入/输出系

45、统 2驱动程序对象和设备对象 当线程为一个文件对象打开一个句柄时,I/O管理器必须根据文件对象名称来决定它将调用哪个驱动程序来处理请求。而且,I/O管理器必须在线程下一次使用同一个文件句柄时可定位这个信息。第六章 输入/输出系统 驱动程序对象代表系统中一个独立的驱动程序,I/O管理器从这些驱动程序对象中获得并为I/O记录每个驱动程序的调度例程的入口。 设备对象在系统中代表一个物理的、逻辑的或虚拟的设备,并描述它们的特征,如缓冲区的对齐方式和它用来保存即将到来的I/O请求包的设备队列的位置。第六章 输入/输出系统 图6.30显示了一个设备驱动器对象。从图中可以看出,设备对象反过来指向自己的驱动程

46、序对象,这样I/O管理器就知道在接收一个I/O请求时应该调用哪个驱动程序,即它使用设备对象找到代表该设备驱动程序的驱动程序对象,然后利用在初始化请求中提供的功能码来索引驱动程序对象。每个功能码都对应于一个驱动程序的入口。第六章 输入/输出系统 IRPIRP读该驱动程序操作的设备功能码2文件读写卸载撤消设备对象IRPI/O请求队列文件对象属性(磁盘分区)设备对象(磁盘分区)(磁盘)设备对象启动I/O驱动控制器驱动程序对象功能码1功能码n文件名设备类型字节位移共享模式打开模式指向设备对象指针指向卷参数块指针文件处理图6.30 Windows 2000/XP输入/输出的数据结构第六章 输入/输出系统

47、 3IO请求包 IRP是I/O系统用来存储处理I/O请求所需信息的地方。当线程调用I/O服务时,I/O管理器就构造一个IRP来表示在整个I/O过程中要进行的操作。I/O管理器在IRP中保存一个指向调用者的文件对象指针。IRP由两部分组成:固定部分(标题)和一个或多个堆栈单元。 第六章 输入/输出系统 IRP设备驱动程序2. I/O管理器创建IRP并初始化第一个堆栈单元核心态I/O系统服务环境子系统或动态链接库IRP堆栈单元I/O管理器1.应用程序将文件写到打印机,将句柄传给文件对象用户态调度例程启动I/OISRDPC例程WRITE参数IRP标题驱动程序对象设备对象文件对象3. I/O管理器用驱

48、动程序对象来定位WRITE调度例程并调用它,同时将IRP传给它图6.31 单层驱动程序中一个I/O请求涉及的数据结构第六章 输入/输出系统 6.8.4 Windows 2000/XP的设备驱动程序 1核心驱动程序 核心驱动程序主要分为如下几种: (1) 文件系统驱动程序:接收访问文件的I/O请求,主要针对大容量的设备和网络设备。 (2) PnP管理器和电源管理器设备驱动程序:包括大容量存储设备、协议栈和网络适配器等。第六章 输入/输出系统 (3) 为NT编写的驱动程序:可在Windows 2000/XP下工作,但一般不支持电源管理和PnP。 (4) WIN32子系统显示和打印驱动程序:把与设备

49、无关的图形(GDI)请求转换为设备专用请求。这些驱动的集合称为“核心态图形驱动程序”。 (5) WDM驱动程序:包括对PnP、电源管理和WMI的支持。 第六章 输入/输出系统 2Windows 2000/XP支持的其他驱动程序 Windows 2000/XP支持的其他驱动程序主要有: (1) 虚拟设备驱动程序:用于模拟16位的MS DOS的驱动程序,它们捕获MS DOS应用程序对端口的引用,并将其转化为本机WIN32 I/O函数。 (2) WIN32子系统的打印驱动程序:把与设备无关的图形(GDI)请求转换为打印机相关命令,这些命令再发给核心模式的驱动程序,例如,并口驱动(Parprot.sy

50、s)、USB打印机驱动 (Usbprint.sys)等。第六章 输入/输出系统 3硬件支持的驱动程序 硬件支持的驱动程序主要有: (1) 类驱动程序:该驱动程序一般提供某类设备的基本支持接口,如磁盘、CD-ROM等,它通过端口驱动程序提供的逻辑端口操作硬件。 第六章 输入/输出系统 (2) 端口驱动程序:用于提供某种接口(如串行接口、并行接口、USB接口等)的操作例程库,它是小端口驱动程序的一个功能包装,通过这些接口,类驱动程序可以直接访问接口而不必去和连接它们的总线交互了。 (3) 小端口驱动程序:该驱动程序用于对实际硬件适配器的I/O请求映射,它负责最后驱动硬件工作。 当文件系统收到一个特定文件“写”数据的请求时,如何转换为磁盘上的柱面/磁道/扇区?图6.32便说明了数据“写”到磁盘上的过程。第六章 输入/输出系统 5. 将相对地址转换为物理 地址,并写数据文 件 系 统驱 动 程 序环境子系统或动态链接库I/O管理器文件系统驱动程序用户态4. 调用驱动程序在相对地址处 写数据3. 将文件的字节偏移量转换为磁 盘上的字节偏移量,通过I/O管 理器调用下一个驱动程序2. 在文件指定的偏移量处写数据I/O系统服务核心态1. Nt WriteFile(file_handle, char_buffer)图6.32

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论