收藏 分享(赏)

《操作系统》课件-7.ppt

上传人:jw66tk88 文档编号:8117840 上传时间:2019-06-09 格式:PPT 页数:31 大小:1.91MB
下载 相关 举报
《操作系统》课件-7.ppt_第1页
第1页 / 共31页
《操作系统》课件-7.ppt_第2页
第2页 / 共31页
《操作系统》课件-7.ppt_第3页
第3页 / 共31页
《操作系统》课件-7.ppt_第4页
第4页 / 共31页
《操作系统》课件-7.ppt_第5页
第5页 / 共31页
点击查看更多>>
资源描述

1、第7章 实例分析: Windows 2000操作系统,1.,2.,3.,本章讲述内容:,Windows 2000的微内核结构、线程概念及其调度策略 ;,Windows 2000的页目录、页表两级地址转换过程,以及进程工作集概念 ;,Windows 2000支持的NTFS文件系统及基于日志文件的可恢复性技术 ;,Windows 2000的I/O请求包(IRP)和两级中断处理(ISR和DPC) 。,4.,7.1 Windows 2000的处理机管理,7.1.1 Windows 2000的结构,“客户-服务器”模型,1.,把操作系统分成若干进程,每个进程完成单一功能。这些进程被称为 “ 服务器 ”

2、。应用程序为了请求所需要的服务,向服务器发消息。发送的消息被运行在核心态的内核俘获,由它传递给相应的服务器处理。服务器执行完操作,同样是通过内核,把回应的消息发还给用户。这就是操作系统设计的所谓“客户-服务器”模型。,微内核,2.,硬 件,内 核,用户态,核心态,用户 应用程序,进程 服务器,文件 服务器,内存 服务器,网络 服务器,显示 服务器,用户进程(客户),系统进程(服务器),用“客户-服务器”模型构造操作系统,中心思想是将其非基本部分从内核里移走,只留下最为关键的进程管理、内存管理、以及进程通信等功能组成操作系统的内核。这是所谓的“微内核”构造模式。用微内核模式构造出的操作系统,便于

3、系统功能的扩充。,粗线下方是操作系统核心,运行在统一的核心地址空间。,内核:由系统最低级功能组成。,3.,Windows 2000的整体结构,硬 件,OS/2应用程序,POSIX应用程序,Win32应用程序,应用程序进程,OS/2子系统,POSIX子系统,Win32子系统,环境子系统进程,打印服务程序,假脱机程序,事件日志,服务进程,服务管理程序,Windows登录,会话管理程序,系统进程,对象 管理程序,进程、线程 管理程序,安全访问 监控程序,即插即用 管理程序,本地过程 调用工具,虚拟内存 管理程序,文件系统,高速缓存 管理器,设备 驱动器,网络 驱动器,I/O管理器,执行体,内 核,硬

4、件抽象层(HAL),用户态,核心态,.,粗线将Windows 2000分为用户态和核心态两个部分 。,粗线的上方既有运行在用户态的系统支持进程,也有真正的用户进程。它们一旦被创建,就运行在各自私有的用户地址空间中。,.,.,(1),执行体:提供进程和线程管理、进程通信、内存管理、对象管理、中断处理、I/O、 网络及对象安全等。,(2),(3),硬件抽象层:一个软件层,将执行体、内核与硬件分隔开来 。,7.1.2 Windows 2000的进程和线程,Windows 2000的进程和线程,1.,Windows 2000把维系在进程一体的两个特征分开来处理,形成不同的实体:让进程只具有“资源拥有者

5、”这个特征,而“调度和运行”这个特征则赋予一个新的实体线程。,.,.,I/O信息。,Windows 2000进程控制块(EPROCESS)里的基本内容,(1),进程的ID:它是该进程在操作系统中的唯一标识。,(2),安全描述符:记录谁是进程的创建者,谁可以访问和使用该进程。,(3),基本优先级:进程中线程的基本优先级。,(4),执行时间:进程中所有线程已经执行的时间总量。,(5),链接指针:指向下一个进程控制块。,(6),(7),进程环境块(PEB)。,内存管理信息。,.,Windows 2000线程控制块里的基本内容,(1),线程的ID:当线程调用一个服务程序时,用来唯一标识该线程。,(2)

6、,动态优先级:记录任何时刻线程的执行优先级。,(3),指向线程所属进程的EPROCESS的指针。,(4),线程类别(是客户线程还是服务器线程)。,(5),执行时间:本线程执行时间总计。,(6),线程环境块(TEB)。,(7),转换:处于等待状态的线程,当等待的条件得到满足、但它所需要的资源此时不可用时,那么就转为转换状态。当该资源可用时,线程就由转换状态变为就绪状态。,终止:一个线程执行完毕、或者被另一个线程撤消,它就成为终止状态。一旦完成了善后的辅助工作,该线程就从系统中消失。,等待:运行状态的线程,因为某一事件(如I/O)而被阻塞,则进入等待状态。,运行:拥有处理器的线程,处于运行状态。一

7、旦微内核实行进程或线程的切换,备用线程就进入运行状态并开始执行。,备用:Windows 2000支持对称多处理器系统(SMP) 。一个线程为备用状态,即它已被选定为下一 次在SMP的某个特定处理 器上运行。该线程在这个 状态等待,直到那个处理器可用。,就绪:具有该状态的线程,已获得除处理机外的所有资源,因此可被调度执行。,2.,Windows 2000线程的状态及状态变迁,在Windows 2000里,一个进程仍然有就绪、运行、等待(阻塞)三种基本状态。但线程则有六种可能的状态:就绪、备用、运行、等待、转换和终止 。,.,.,初始化,就绪,转换,备用,运行,等待,终止,创建并 初始化,接纳,线

8、程调度,剥夺,时间片到,切换,完成,资源可用,解除等待 资源不可用,解除等待 资源可用,请求I/O或 等待某资源,可运行,不可运行,.,.,.,.,该表共32个表项,每个表项按线程的优先级,维持一个具有该优先级的线程就绪队列。,7.1.3 Windows 2000的线程调度,1.,Windows 2000的线程调度,Windows2000处理机调度的对象是线程,进程只是以资源和运行环境提供者的身份出现。实施的是一个基于优先级的、抢占式的多处理机调度策略。调度时,只针对线程队列进行,不考虑被调度线程属于哪一个进程。通常,一个线程可安排在任何可用处理机上运行,但也可以限制只在指定的处理机(称为“亲

9、合处理机”)上运行。,2.,引起线程调度的情况,.,.,一个线程进入就绪状态;,一个线程运行的时间片到时;,.,一个线程的优先级被改变;,.,一个运行线程改变其对亲合处理机的要求。,3.,线程调度的管理,31,30,29,2,1,0,线程调度器就绪队列,进程1,线程1,线程2,进程1,线程1,线程2,线程n,就绪位图,空闲位图,.,线程调度器就绪队列表,.,.,就绪位图,空闲位图,4.,单处理机系统中的线程调度策略,.,.,主动切换,系统中的一个线程,可能会因等待某一事件、I/O操作、消息等,自己放弃处理机,进入等待状态。这时,Windows 2000就采用主动切换的调度策略,使就绪队列里的第

10、1个线程进入运行状态。,*,线程 优先级,20,19,18,17,16,15,运行状态,就绪状态,*,*,*,变为等待状态,线程就绪队列,抢占,当一个高优先级线程由等待变为就绪状态时,正处于运行状态的低优先级线程就被抢占。抢占可能出现在两种情况:一是处于等待状态的高优先级线程,所等待的事件出现;二是一个线程的优先级被提升。在这两种情况下,Windows 2000 都会确定当前运行线程是否继续运行,是否要被高优先级线程所抢占。,*,线程 优先级,18,17,16,15,运行状态,就绪状态,*,*,*,从等待状态唤醒,在I/O操作完成、所等待的事件或信号量到来、前台线程等待结束 、图形用户接口线程

11、被唤醒、以及提高处理机饥饿线程 (指在就绪队列里长期等待而一直没有得到运行机会的那种线程)的优先级时,Windows 2000都将以其基本优先级为基点,提升该线程的优先级。,.,时间配额用完,处于运行状态的线程用完时 间配额时,Windows 2000 先判定是否 要降低它的优先级,是否要调度另一个 线程运行。若要降低该线程的优先级, 那就让一个新的线程投入运行。若不降 低其优先级,且有优先级相同的其他就 绪线程存在,那就选择一个线程运行,该线程排到就绪队列末尾;若无相同优先级的就绪线程可运行,那刚用完时间配额的线程将得到一个新的时间配额继续运行。,线程 优先级,15,14,13,12,运行状

12、态,就绪状态,*,*,*,.,结束,当一个线程在自己的时间配额里运行完毕,那么它的状态就由运行变为终止。这时系统将重新调度另一个就绪线程运行。,5.,线程优先级的升降,一个线程在时间配额使用完后,其优先级一般都会降低(以便给别的线程有投入运行的机会)。,.,.,7.2.1 Windows 2000进程的空间布局,1.,虚拟地址空间,Windows2000采用32位虚地址结构。因此,每个用户进程最大的虚拟地址空间是232 = 4GB。,7.2 Windows 2000的存储管理,2GB,2GB 用户空间,7FFFFFFF,00000000,2GB 系统空间,FFFFFFFF,80000000,一

13、个进程,3GB,3GB 用户空间,BFFFFFFF,00000000,1GB 系统空间,FFFFFFFF,C0000000,一个进程,4GB虚拟地址空间可以有两种布局情况:一是每个用户进程占有其中的2GB,作为自己的私有地址空间,余下的2GB是所有进程共用的系统地址空间;,2.,虚拟地址空间的布局,另一是每个用户进程占有其中 的3GB,作为自己的私有地址空间, 余下的1GB是所有进程共用的系统地址空间。通常,Windows2000默认的虚拟地址空间布局是每个用户占用2GB的私有地址空间情况。后一种情况只是为了满足一些应用程序的特殊需求,而采用的临时解决办法。,.,.,每个页表项 (PTE) 为

14、4个字节长,记录该页表项对应的页帧号(PFN),以及描述该页帧使用状态和保护限制的一些标志位。,为此,Windows 2000的一个虚拟地址被划分成三部分:页目录索引、页表索引、页内位移量。,Windows 2000的每个页表索引项,需用4个字节表述。因此,1M个页表索引项需花费4MB这么多的存储量,这不利于内存空间的有效利用。,由于虚地址是32个二进制位,每页尺寸4KB。因此在虚地址里,应用12位表示页内位移量(212 = 4KB),用20位表示页号。页号也称页表索引。这样,Windows 2000向用户提供的虚地址空间,最多可拥有220 = 1M个页面,即每个页表里会有1M个页表索引项,用

15、来记录虚地址空间里页与物理内存页帧间的对应关系。,7.2.2 Windows 2000的地址变换机构,1.,虚拟地址的构成,Windows 2000通过请求分页的方式,向用户提供虚拟存储。在那里,物理内存中划分的块被称为“页帧”(有的也称为“页框”),每个页帧的尺寸为4KB。,.,.,.,.,32位虚拟地址:,页目录索引,页表索引,页内位移量,31,22,21,12,11,0,虚页号,.,页帧号,GI,L,A,D,Cd,O,Wt,W,V,U,P,CW,31,12,11,10,9,8,7,6,5,4,3,2,1,0,Windows页表项结构,页目录由一个个页目录项(即页目录索引,PDE)组成,记

16、录了进程一个(小)页表的状态和位置。每个进程最多可以有1024个页表,所以页目录里最多有1K个页目录项,正好放在一个内存页帧里。,每个进程有一个页目录,由它获得该进程所有(小)页表位置。系统把页目录的地址存放在进程控制块里,实施进程切换时,就把该地址加载到CPU内部的一个寄存器(如CR3)中,并根据CR3里的当前内容,完成所需的地址变换。,任何一个进程的页表 集合,都由两部分组成:进 程页表完成对私有地址空间 (2GB)地址变换的任务;系 统的页表实现对共享的系统 地址空间(2GB)地址变换的 任务。,2.,页表与页表项,.,.,无论是进程私用的进程页表,还是大家共用的系统页表,都是由一个个页

17、表项(即页表索引,英文缩写为PTE)组成。,.,进程1私用的 进程页表集合,进程2私用的 进程页表集合,系统页表,进程1的 页目录,PDE 0,PDE 511,PDE 512,PDE n,进程2的 页目录,PDE 0,PDE 511,PDE 512,PDE n,进程私用,进程私用,进程共用,.,3.,虚拟地址的变换过程,每当进程切换时,操作系统将该进程的页目录地址置入专用寄存器CR3中。于是,CR3指向该进程的页目录。,.,页目录索引,PDE,PTE,进程的 页目录,进程的 页表集合,物理地址,一个页帧,专用寄 存器CR3,页表索引,页内位移量,内存,32位虚拟地址:,每个进程一个页 目录,含

18、1024项,每个进程最多512个 私用页表,512个系 统页表,每张表1024项,.,由虚拟地址中的页目录索引,指出页目录项(PDE)的位置,从中得到当前所需页表的位置。即从进程的页表集合里,挑选出进行地址转换所需要的页表。,.,由虚拟地址中的页表索引,指出所选页表里的页表项(PTE)位置。在这一页表项里,记录有虚拟页面在内存的位置。,.,若页表项是有效的,那么记录的页帧号(PFN) 是 有效的,虚拟页面就在这个物理帧中;若页表项是无效的,那就会引起缺页中断,需从磁盘里调入所需要的页面。,.,当页表项为有效时,就根据虚拟地址中的页内位移量,找到所需数据在物理页帧中的位置,完成对它的地址重定位。

19、,进程装入内存时,根据应用类型、程序要求等原则,分配一定数量的页帧,作为它的工作集,把所需要的页面和一些后续相邻页面一起填满工作集中的页帧。,Windows 2000创建一个进程时,就在内存里分配给它一定数量的页帧私用,存放运行所需要的页面。称这些页面为该进程的“工作集”。,工作集,1.,7.2.3 Windows 2000对内存的管理,.,.,系统对进程工作集的管理,(1),发生缺页时,从产生缺页的进程工作集中选择一个页面用于替换。,(2),不断评估对进程页帧的分配,增加或减少分配给它的页帧数,即进程工作集的尺寸是动态变化的,以提高系统对内存整体的使用性能。,(3),页帧号数据库,2.,.,

20、页帧号数据库的作用,Windows 2000是通过“页帧号数据库”的数组,来管理内存中的各个页帧,跟踪它们的使用情况的。该数组拥有的元素个数,正是整个内存储器中页帧的数目。即数组元素的下标,恰好对应着内存各页帧的页帧号。“页帧号数据库”的名字,由此而得。它的每一个元素记录相应页帧的使用情况:是否空闲,所处状态,以及被谁占用等。,零初始化:页帧空闲,并初始化。,.,进程页帧的六种状态,页帧号 V=0,U=1,一个 页表项,进程2的页表,页帧号 V=1,U=0,一个 页表项,进程1的页表,状态:有效 页表项地址,状态:修改 页表项地址,状态:后备 页表项地址,一个元素,一个元素,页帧号数据库,一个

21、元素,(1),有效:一个进程正在使用该页帧,它在系统某个进程的工作集里。因此,必定有一个有效的页表项指向它。,(2),空闲:页帧处于空闲,但含有不确定的数据 。,(3),后备:已从某进程工作集撤除,原先页表中的页表项已被设置为无效,但是“页帧号”没有变,仍然指向该页帧。,(4),修改:已从某进程工作集中撤除,原先页表中的页表项已设置为无效,但 “页帧号”没有变,仍然指向该页帧。,(5),坏死:该页帧产生奇偶校验错,或其他硬件错误,不能再参与分配。,(6),.,进程页表与页帧数据库的关系,系统由进程页表表项里的“页帧号”,就可以知道该页与内存里的哪一个页帧相对应;由页帧号数据库元素里的页表项地址

22、,就可以知道这个页帧与哪个进程的哪一个页表里的表项相对应。,若所需的不是一个零初始化页帧,那就先去查空闲帧链表;若空,则去查后备帧链表。在决定要把后备帧链表里记录的一帧分配出去前,须从页帧号数据库的元素回溯,找到进程页表里相关的表项(它的状态是V=0,U=1),清除其里面的“页帧号”,以断绝这个页表项与该页帧的联系。这样,才能保证分配的安全。,要求存储分配时,若要的是一个零初始化页帧,那么就先试图从初始化帧链表中得到一个可分配页帧;若该链表空,则从空闲帧链表中选取一帧并将其初始化;若空闲帧链表也空,那么就改为从后备帧链表中选取一帧并将其初始化;如此等等。,7.2.4 Windows 2000的

23、页面调度,1.,Windows 2000的取页策略,所谓“取页策略”,即是指决定何时把一个页面从磁盘调入内存。Windows 2000采用请求调页法和集群法结合的形式,把所需要的页面装入内存。即当线程产生缺页中断时,系统不仅把所需的页装入,也把它附近的一些相邻页一起装入。,2.,Windows 2000的置页策略,当缺页中断时,系统必须确定把虚拟页面放入到物理内存的什么地方。这就是所谓的“置页策略”。具体策略如下所述。,.,.,.,若必须把一个处于修改状态的页帧分配出去,那就先将该页帧的内容写入磁盘,然后将它链到后备帧链表里去,以便将它正确地分配出去。,当进程不得不从工作集中淘汰一个页面时,如

24、果该页面未被修改过,那么就将该页链入后备帧链表;如果页面读出后被修改过,则把它链入到修改帧链表。当撤消一个进程时,它的所有私用页面,都被链入到空闲帧链表里。,若内存不满,系统会允许进程拥有尽量多的页面作为大的工作集。若进程所需页面数超过了规定的工作集最大值,那就只能从自己的工作集中移出一页,腾出空间装新的页面。在单处理机系统中,对进程工作集采用最近最久未用(LRU)换页算法。,创建进程时,在内存里分配一定数量的页帧(即工作集)给它,以保证其运行的需要。系统实施的是可变式的工作集策略,即根据所管理物理内存的数量,为进程规定了最小工作集和最大工作集的规模。对诸进程共享的系统虚拟空间中可分页的代码和

25、数据,也分配一个系统工作集,也规定它可取的最小值和最大值。,若线程产生缺页中断时,内存已没有空闲的页帧可供分配使用,那么就要决定把内存中的哪个页面调换(淘汰)出去。这就是所谓的“换页策略”。,3.,Windows 2000的换页策略,.,.,.,.,缺页中断时,先检查进程的工作集大小和系统当前空闲内存的数量。如有可能,系统就允许进程把自己的工作集规模增加到最大值(如果有足够的空闲页帧,也可以超过这个最大值)。但如果内存紧张,那就只能在工作集内进行页面替换,而不是增加工作集中的页面。,7.3 Windows 2000的文件管理,7.3.1 Windows 2000文件系统综述,1.,Window

26、s 2000的文件系统模型,Windows 2000文件系统属于核心态的执行体,它与I/O管理器紧密相联。设备驱动程序位于I/O管理器的最底层,由它直接对设备进行I /O操作。中间驱动程序与设备驱动程序一起,为输入 /输出提供更强的处理功能。文件系统驱动程序(FSD)从用户那里接收特定的文件操作请求,把I/O完成的结果返还给用户。,文件系统驱动程序,中间驱动程序,设备驱动程序,HAL,物理设备,用户程序的I/O请求,I/O管理器,执行体,2.,磁盘卷与簇,.,磁盘是用来实现文件系统的外部存储介质。所谓 “卷”,是指磁盘上的分区(一张软盘也可被视为一个存 储卷)。分区是磁盘的基本组成部分,是能够

27、被格式化和单独使用的逻辑单元。,.,若直接把磁盘扇区作为磁盘管理和读/写的单位,会大大增加系统的负担,降低工作效率。因此,文件系统总是以簇为单位来划分和管理存储空间。所谓“簇”,是指若干个物理扇区的集合。簇的大小随磁盘卷的尺寸而不同,但总是把簇取成是物理扇区的整数倍,而且通常是2的幂次。,文件分配表1和文件分配表2:每个磁盘卷都安排两个文件分配表,它们的内容完全相同,一个作为另一个的备份,必要时起恢复的作用。一个磁盘卷上有多少簇,文件分配表FAT就有多少个表项。FAT文件系统利用文件分配表的表项,记录对应簇的使用情况,也记录一个文件使用了数据存储区里的哪些簇,形成该文件的文件分配链。,FAT文

28、件系统借助所谓的“文件分配表”来管理磁盘存储空间,创建和使用文件。由FAT管理的磁盘卷,分为五个区域:引导区,文件分配表1,文件分配表2,根目录区,以及数据存储区。,FAT文件系统,3.,Windows可直接支持的文件系统,.,引导区,文件分配表1,文件分配表2,根目录区,数据存储区,(1),引导区:该区里存 放的是引导程序,以及有 关该卷的总信息 。,(2),(3),根目录区:用于存放该卷根目录下各子目录或文件相应的目录项内容。,(4),数据存储区:具体存放文件以及子目录内容的区域,它占据了整个卷的绝大部分存储空间。,.,NTFS文件系统,NTFS是一种具有较好容错性和安全性的全新文件系统,

29、NTFS也以簇作为磁盘空间分配和回收的基本单位。一个文件总是占用存储空间里的整数个簇 。,.,.,虚拟簇号和逻辑簇号,NTFS文件系统按簇的 尺寸划分文件的虚拟空间,这样的顺序号,称 “虚拟簇号(VCN)” ;把整个卷中所有的簇从头到尾进行顺序编号,称为逻辑簇号(LCN)。,主控文件表,NTFS把卷上磁盘存储区 分成两个部分,其中大约12% 的空间给主控文件表(MFT)使 用,余下的88%的空间被分配 用于存储各种文件。主控文件表是NTFS卷结构的核心,最重要的系统数据,它包含了卷中存储的所有文件的信息。,0,1,2,3,4,5,6,文件A的虚拟 簇号(VCN):,文件A:,0,1,2,3,4

30、,5,6,11,15,8,6,13,3,10,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,磁盘的逻辑 簇号(LCN):,磁盘卷:,4.,Windows的本地FSD和远程FSD,Windows 2000是网络操作系统,因此它的文件系统驱动程序(FSD)可分为本地FSD和远程FSD两种。前者允许用户访问自己计算机上的文件和数据,后者允许用户通过网络访问远程计算机上的文件和数据。,12%,88%,文件存储区,主控文件表(MFT)区,.,本地FSD,I/O管理器,应用程序接口,文件系统驱动程序(FSD),存储设备驱动,物理磁盘,用户态,核心态,物理设备,NTFS型文件系

31、统,其卷的第一个扇区是启动扇区,由它来确认卷上文件系统的类型,确定该文件系统主控文件表(MFT)所在的位置,并对卷实施各种一致性检查。因此,当用户应用程序访问某个卷时,是通过I/O管理器调用本地的FSD,完成对卷的识别。随后,FSD通过设备驱动程序,将用户对卷的I/O请求转交给物理设备,并具体完成。,.,远程FSD,应用程序,I/O管理器,远程FSD(重定向器),用户态,核心态,存储设备驱动,远程FSD(服务器),用户态,核心态,本地FSD,物理磁盘,物理设备,客户端,服务器端,远程FSD由客户端FSD与服务器端FSD组成。客户 端FSD在收到来自应用程序的I/O请求后,将其转换为互 联网文件

32、系统的协议命令, 通过远程FSD(重定向器), 完成与服务器端远程FSD (服务器)间的通信。服务器 端FSD的监听网络命令在接 到互联网文件系统协议命令 后,把它转交给服务器端的 本地FSD处理,实现用户对 远程计算机上数据的访问。,当属性值能直接存放在MFT元素里时,称其为“常驻属性”。大文件或大目录所含的属性,有时可能用一个MFT元素放不下。那么,NTFS就会在MFT之外给它们分配存储区域。这样的存储区域,称为一个“扩展”。属性值存储在扩展中而不是在MFT元素中的属性,被称为“非常驻属性”。,MFT数组开头的16个元素,是预留记录NTFS的16个特殊文件的,它们统称为是“元数据文件”。在

33、这16个元数据文件元素的后面,才是普通文件和目录文件的元素。,MFT是一个数组,是以数组元素为记录构成的文件。MFT中每个元素都是1KB。在NTFS里创建一个文件时,就在MFT存储区里开辟一个1KB大小的元素,用于记录该文件的有关信息。即只要是存于NTFS卷上的文件,在MFT里都有一个元素与之对应。由于MFT也是一个文件,因此在MFT里也有一个元素与MFT这个文件相对应。,.,7.3.2 NTFS的主控文件表,1.,NTFS的主控文件表MFT,.,2.,MFT的元素结构,MFT中的每个元素,是由一系列的 “属性,属性值” 对组成。在MFT的第5个元素$AttrDef里,列出该卷能支持的所有文件

34、属性。并不是所有的属性都会出现在MFT元素中,有的属性是每个MFT元素必须包含的,比如“标准信息”、“文件名”等;有的属性则是可选的。,.,.,用户对某文件有I/O请求时,通过查找该文件MFT元素中的文件索引表,得到VCN所对应的LCN,并计算出真实的簇物理地址,这样就可以启动设备完成具体的输入/输出任务了。,1.,NTFS文件的结构,7.3.3 NTFS文件和目录的结构,NTFS文件系统中,文件采用的物理结构是索引式的。即如果一个文件很小,那么文件内容就直接存放在其相应的MFT元素中;如果文件很大,在1KB的MFT元素里存放不下,那就在MFT中形成一张索引表,记录分配给该文件的磁盘簇(也就是

35、前面提及的“扩展”)。,文件名,标准信息,起始的VCN号,起始的LCN号,簇数,0,4,6,1262,1364,1746,4,2,5,一簇,0,1,2,3,4,5,6,7,8,9,10,VCN:,LCN:,1262,1263,1264,1265,1364,1365,1746,1747,1748,1749,1750,.,.,2.,NTFS目录的结构,NTFS系统中,小 目录的MFT元素将对所含的文件名及子目录名进行排序,然后保存在索引根属性里。对于大的目录,其MFT元素没有足够的空间存储大目录的文件名索引。这时,一部分索引在MFT的索引根属性里,另一部分则只有出现在扩展中。这种扩展称为“索引缓冲

36、区”。NTFS把索引根和索引缓冲区维系在一起,形成一棵所谓的B+树。索引根属性中除了包含B+树当前的第一级文件名外,还包含指向下一级索引缓冲区的指针。,日志文件分成两个区域,“重启动区域”里存储重启动时所需的信息,系统失败后就从这里读取必要的信息。由于重要,所以安排有两个相同的副本:副本1和副本2。“无限记录区域”用于随时存放系统运行 过程中的各种日志记录,以供恢复 时使用。,所谓文件系统的“可恢复性”,即指由于突然断电或软件故障的发生,系统崩溃后致力于恢复时,能确保磁盘卷结构上记录的数据不被丢失,不受损坏。NTFS是采用基于事务的日志文件技术,来达到这一目的。,文件和目录的数据最终都是存储在

37、磁盘上。但为了加快访问速度,系统在运行过程中,会把它们的部分内容暂时保存在内存,到适当时机再对磁盘进行刷新或回写。内存中的这部分信息,当然更为新鲜。但是,如果计算机突然崩溃,就可能会引起数据的丢失或不一致。,7.3.4 NTFS对可恢复性的支持,1.,“可恢复性”的含义,.,.,2.,NTFS的日志文件及日志文件服务程序,副本1,副本1,日志记录,重启动区域,无限记录区域,.,MFT的第3个元素是“日志文件($LogFile)”。系统运行时,NTFS会随时在日志文件中记录下影响NTFS卷结构的各种操作。万一系统陷于崩溃时, NTFS卷能够以此得到尽可能的恢复(注意,所恢复的只是文件系统卷的数据

38、,而不是用户数据)。,.,日志文件中可存放多种类型的记录,最为主要的有:“更新”记录,“检查点”记录,“事务表”记录,以及“脏页表”记录。它们在系统的恢复过程中,起到重要作用。,为了实现可恢复性,在重新启动时NTFS将对磁盘上的日志文件进行三次扫描:分析扫描,重做扫描,撤消扫描。,所谓“分析”扫描,即是在系统崩溃时的日志文件的两个检查点之间进行扫描,把居于其中的脏页表记录和事务表记录复制到内存,加以分析。确定进行重做扫描和撤消扫描的开始位置。,3.,可恢复性的实现,日志文件服务(LFS)程序是NTFS中的一组核心态程序,NTFS通过LFS来管理和访问日志文件,完成对日志文件的打开、写入、向前、

39、向后、更新等操作的。,.,.,.,(1),(2),(3),所谓“重做”扫描,即是根据分析扫描确定的重做位置,按照更新记录里的重做信息,完成对事务子操作的重做。,所谓“撤消”扫描,即是根据分析扫描确定的撤消位置,按照更新记录里的撤消信息,完成对事务子操作的撤消。,脏页表,更新记录,更新记录,事务表,检查点记录,更新记录,检查点记录,分析扫描的进行方向,检查点操作起点,检查点操作终点,7.4 Windows 2000的设备管理,7.4.1 Windows 2000设备管理综述,1.,Windows 2000 I/O系统的结构,显示器,CD-ROM,磁带,磁盘,键盘,打印机,鼠标,应用程序,应用程序

40、,应用程序,I/O系统服务,I/O 管理程序,文件系统驱动程序:,设备驱动程序:,用户态,核心态,Windows 2000 I/O系统由I/O系统服务、I/O管理器、各种驱动程序(文件系统的和设备的)等组件组成成。,2.,I/O请求包,I/O请求包(IRP)是I/O 系统用来存储处理I/O请求 所需信息的地方。当线程 程序里出现一个有关 的系统调用时,I/O 管理器就为该请求构造一个IRP,以表示在整个I/O进展过程中系统要做的各种操作。,.,.,在I/O管理器构造好一个IRP后,就把它排到提出请求I/O的线程相关联的队列里,形成IRP队列。在整个I/O处理过程中,都是通过“包”来驱动的:IR

41、P从一个组件移动到另一个组件,并激活该组件的工作,最终完成所需要的I/O操作。因此,IRP是在每个阶段控制如何处理I/O操作的关键数据结构。,中断服务程序(ISR):在设备发出中断时,经内核中断调度程序的识别,把控制转给相应的中断服务程序。为了提高系统的并行工作能力,Windows 2000对中断服务程序做如下的安排:把中断服务程序要完成的功能一分二,一部分执行尽可能少的关键性操作,仍称其为中断服务程序(ISR),让它运行在高中断请求级上;让余下的中断处理部分运行在低中断请求级上,称为延迟过程调用程序(DPC)。,添加设备程序:用于支持即插即用(PnP)管理器的操作,提供识别并适应计算机系统硬

42、件配置变化的能力。,初始化程序:在系统初启完成、驱动程序被加载到内存时, I/O管理器就要执行驱动程序的初始化程序,以完成各种初始化工作。,IRP由两个部分组成:固定部分(即标题) 和I/O堆栈。固定部分存放诸如I/O请求的类型(读或写)和大 小(读写数据的个数),是同步请求还是异步请求,指向输入 /输出缓冲区的指针,以及随着请求处理过程的进展而变化 的状态等信息。I/O堆栈由多个堆栈存储单元组成,所含单 元数是不定的,与处理这一请求所涉及的驱动程序数目有 关,每个单元里存放着一个处理该IRP的驱动程序 。,.,I/O请求包(IRP)结构:,标题,I/O堆栈单元n,I/O堆栈单元2,I/O堆栈

43、单元1,固定部分,I/O堆栈,3.,驱动程序的组成,.,.,.,一组功能调用程序:实现驱动程序提供的主要功能,如打开、关闭、读取、写入等。I/O管理器根据I/O请求生成IRP后,通过这些功能调用程序执行具体的I/O操作。,.,对大容量设备(如磁盘、磁带等)是使用多层驱动程序结构。即I/O请求先是由I/O管理程序发送给文件系统驱动程序。经过这一层处理后,才由I/O管理程序发送给设备驱动程序,由 它最后完成I/O。,对于面向字符的设备(鼠标、显 示器、键盘、打印机),大都使用单层设 备驱动程序结构来完成用户的I/O请求, 即I/O管理程序直接把I/O请求发送给有关 的设备系统驱动程序进行处理 。,

44、4.,驱动程序的分层,.,显示器,键盘,打印机,鼠标,I/O系统服务,I/O 管理程序,设备驱动程序:,设备:,.,网络服务器,CD-ROM,磁带驱动器,磁盘驱动器,I/O系统服务,I/O 管理程序,文件系统驱动程序:,设备驱动程序:,设备:,延迟过程调用程序(DPC):这是对ISR功能的延续,完成大部分中断处理的善后工作。比如完成对I/O的初始化,启动排在设备I/O等待队列里的下一个I/O操作等。因此,延迟过程调用程序(DPC)运行在低中断请求级上。,.,启动I/O程序:驱动程序通过自己的启动I/O程序,实现系统与设备间的数据传输。,.,所谓“异步I/O操作”,即是指用户线程发出一个 I/O

45、请求、并把该请求交给 I/O系统去处理的时候,发出请求的线程并不是处于等待处理完成的状态,而是仍可继续自己的其他某些工作。等到系统将该I/O处理完毕,再把结果传递给相应的线程。,所谓“同步I/O操作”,即是指用户线程发出一个I/O请求后,将该请求交给I/O系统去处理,自己则处于等待服务完成的状态。I/O管理器接受请求后,通过调用相应的设备驱动程序,完成数据处理,并将结果传输给等待线程。于是,线程又可以投入运行了。在采用同步I/O操作方式时,I/O操作完成在先,控制返回线程在后。图中的虚线,表示越过中断处理程序。,7.4.2 Windows 2000单层驱动程序的I/O处理,1.,同步I/O操作

46、与异步I/O操作,.,.,发出I/O请求的线程,等待,设备驱动程序,中断处理程序,硬件,数据处理,用户空间,内核空间,时间,发出I/O请求的线程,设备驱动程序,中断处理程序,硬件,数据处理,用户空间,内核空间,时间,标有的步表 示打印机设备驱动程序进行中断处理,将有关结果存入IRP后,把IRP发送给I/O管理程序。,标有的步表示I/O完成,打印机发出中断请求。,标有的步表示打印机设备驱动程序接到IRP后,一是 接收有关的I/O参 数,另一是启动打印机,执行I/O操作。,标有的步表示I/O管理器为请求创建一个IRP,发送给打印机设备驱动程序。,标有的步表示接受用户线程发出的I/O请求后,环境子系

47、统去调用I/O系统服务中的NtWriteFile(file_handle, char_buffer)程序,提出请求的用户线程等待I/O的结束。,假定用户线程以同步的方式,向打印机的写缓冲区中存入若干字符,打印机连接在计算机的并行端口,由单层打印驱动程序控制。,2.,单层驱动程序I/O请求的实现,.,应用程序,应用程序,应用程序,I/O系统服务,I/O管理程序,打印机设备驱动程序,打印机,4,完成I/O,产生中断,5,处理中断,将有关信息填入IRP,IRP,IRP,2,创建IRP,发送到设备驱动程序,3,传送IRP中的参数,6,完成IRP,返回成功或失败状态,1,NtWriteFile(file_handle,char_buffer),用户态,系统态,.,.,.,.,.,标有的步表示请求完 成,把结果和状态返回用户,撤消相应IRP。,标有的步表示由于打印机连接在计算机的并行端口上,通过查中断分配 表,得到该设备的中断服务程序 ( ISR ) 入口地址,这个中断服务 程序应该在设备驱动程序里。,标有的步表示中断服务程 序( ISR ) 执行完毕,一面把中断 请求级别恢复到中断发生前,另 一面把一个DPC排入DPC队列,以在适当时机得以运行。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报