《《操作系统》课件-7.ppt》由会员分享,可在线阅读,更多相关《《操作系统》课件-7.ppt(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
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的处理机管理的处理机管理o7.
2、1.1 Windows 2000的结构的结构“客户客户-服务器服务器”模型模型1.把操作系统分成若干进程,每个进程完成单一功能。这些进程被称为“服务器服务器”。应用程序为了请求所需要的服务,向服务器发消息。发送的消息被运行在核心态的内核俘获,由它传递给相应的服务器处理。服务器执行完操作,同样是通过内核,把回应的消息发还给用户。这就是操作系统设计的所谓“客户客户-服务器服务器”模型。微内核微内核2.硬 件内 核用户态核心态用户应用程序进程服务器文件服务器内存服务器网络服务器显示服务器用户进程用户进程(客户客户)系统进程系统进程(服务器服务器)用“客户-服务器”模型构造操作系统,中心思想是将其非基
3、本部分从内核里移走,只留下最为关键的进程管理、内存管理、以及进程通信等功能组成操作系统的内核。这是所谓的“微内核微内核”构造模式。用微内核模式构造出的操作系统,便于系统功能的扩充。粗线下方是操作系统核心,运行在统一的核心地址空间。内核:由系统最低级功能组成。3.Windows 2000的整体结构的整体结构硬 件OS/2应用程序POSIX应用程序Win32应用程序应用程序进程OS/2子系统POSIX子系统Win32子系统环境子系统进程打印服务程序假脱机程序事件日志服务进程服务管理程序Windows登录会话管理程序系统进程对象管理程序进程、线程管理程序安全访问监控程序即插即用管理程序本地过程调用工
4、具虚拟内存管理程序文件系统高速缓存管理器设备驱动器网络驱动器I/O管理器执行体内 核硬件抽象层(HAL)用户态核心态.粗线将Windows 2000分为用户态和核心态两个部分。粗线的上方既有运行在用户态的系统支持进程,也有真正的用户进程。它们一旦被创建,就运行在各自私有的用户地址空间中。.(1)执行体:提供进程和线程管理、进程通信、内存管理、对象管理、中断处理、I/O、网络及对象安全等。(2)(3)硬件抽象层:一个软件层,将执行体、内核与硬件分隔开来。o7.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:当线程调用一个服务程序时,
6、用来唯一标识该线程。(2)动态优先级:记录任何时刻线程的执行优先级。(3)指向线程所属进程的EPROCESS的指针。(4)线程类别(是客户线程还是服务器线程)。(5)执行时间:本线程执行时间总计。(6)线程环境块(TEB)。(7)转换转换:处于等待状态的线程,当等待的条件得到满足、但它所需要的资源此时不可用时,那么就转为转换状态。当该资源可用时,线程就由转换状态变为就绪状态。终止终止:一个线程执行完毕、或者被另一个线程撤消,它就成为终止状态。一旦完成了善后的辅助工作,该线程就从系统中消失。等待等待:运行状态的线程,因为某一事件(如I/O)而被阻塞,则进入等待状态。运行运行:拥有处理器的线程,处
7、于运行状态。一旦微内核实行进程或线程的切换,备用线程就进入运行状态并开始执行。备用备用:Windows 2000支持对称多处理器系统(SMP)。一个线程为备用状态,即它已被选定为下一次在SMP的某个特定处理器上运行。该线程在这个状态等待,直到那个处理器可用。就绪就绪:具有该状态的线程,已获得除处理机外的所有资源,因此可被调度执行。2.Windows 2000线程的状态及状态变迁线程的状态及状态变迁 在Windows 2000里,一个进程仍然有就绪、运行、等待(阻塞)三种基本状态。但线程则有六种可能的状态:就绪、备用、运行、等待、转换和终止。.初始化就绪转换备用运行等待终止创建并初始化接纳线程调
8、度剥夺时间片到切换完成资源可用解除等待资源不可用解除等待资源可用请求I/O或等待某资源可运行可运行不可运行不可运行.该表共32个表项,每个表项按线程的优先级,维持一个具有该优先级的线程就绪队列。o7.1.3 Windows 2000的线程调度的线程调度1.Windows 2000的线程调度的线程调度 Windows2000处理机调度的对象是线程,进程只是以资源和运行环境提供者的身份出现。实施的是一个基于优先级的、抢占式的多处理机调度策略。调度时,只针对线程队列进行,不考虑被调度线程属于哪一个进程。通常,一个线程可安排在任何可用处理机上运行,但也可以限制只在指定的处理机(称为“亲合处理机”)上运
9、行。2.引起线程调度的情况引起线程调度的情况.一个线程进入就绪状态;一个线程运行的时间片到时;.一个线程的优先级被改变;.一个运行线程改变其对亲合处理机的要求。3.线程调度的管理线程调度的管理313029210线程调度器就绪队列进程1线程1线程2进程1线程1线程2线程n就绪位图空闲位图.线程调度器就绪队列表.就绪位图空闲位图4.单处理机系统中的线程调度策略单处理机系统中的线程调度策略.主动切换 系统中的一个线程,可能会因等待某一事件、I/O操作、消息等,自己放弃处理机,进入等待状态。这时,Windows 2000就采用主动切换的调度策略,使就绪队列里的第1个线程进入运行状态。*线程优先级201
10、918171615运行状态 就绪状态*变为等待状态线程就绪队列抢占 当一个高优先级线程由等待变为就绪状态时,正处于运行状态的低优先级线程就被抢占。抢占可能出现在两种情况:一是处于等待状态的高优先级线程,所等待的事件出现;二是一个线程的优先级被提升。在这两种情况下,Windows 2000 都会确定当前运行线程是否继续运行,是否要被高优先级线程所抢占。*线程优先级18171615运行状态 就绪状态*从等待状态唤醒 在I/O操作完成、所等待的事件或信号量到来、前台线程等待结束、图形用户接口线程被唤醒、以及提高处理机饥饿线程(指在就绪队列里长期等待而一直没有得到运行机会的那种线程)的优先级时,Win
11、dows 2000都将以其基本优先级为基点,提升该线程的优先级。.时间配额用完 处于运行状态的线程用完时间配额时,Windows 2000 先判定是否要降低它的优先级,是否要调度另一个线程运行。若要降低该线程的优先级,那就让一个新的线程投入运行。若不降低其优先级,且有优先级相同的其他就绪线程存在,那就选择一个线程运行,该线程排到就绪队列末尾;若无相同优先级的就绪线程可运行,那刚用完时间配额的线程将得到一个新的时间配额继续运行。线程优先级15141312运行状态 就绪状态*.结束 当一个线程在自己的时间配额里运行完毕,那么它的状态就由运行变为终止。这时系统将重新调度另一个就绪线程运行。5.线程优
12、先级的升降线程优先级的升降 一个线程在时间配额使用完后,其优先级一般都会降低(以便给别的线程有投入运行的机会)。.o7.2.1 Windows 2000进程的空间布局进程的空间布局1.虚拟地址空间虚拟地址空间 Windows2000采用32位虚地址结构。因此,每个用户进程最大的虚拟地址空间是232=4GB。7.2 Windows 2000的存储管理的存储管理2GB2GB用户空间7FFFFFFF000000002GB系统空间FFFFFFFF80000000一个进程3GB3GB用户空间BFFFFFFF000000001GB系统空间FFFFFFFFC0000000一个进程 4GB虚拟地址空间可以有两
13、种布局情况:一是每个用户进程占有其中的2GB,作为自己的私有地址空间,余下的2GB是所有进程共用的系统地址空间;2.虚拟地址空间的布局虚拟地址空间的布局 另一是每个用户进程占有其中的3GB,作为自己的私有地址空间,余下的1GB是所有进程共用的系统地址空间。通常,Windows2000默认的虚拟地址空间布局是每个用户占用2GB的私有地址空间情况。后一种情况只是为了满足一些应用程序的特殊需求,而采用的临时解决办法。.每个页表项(PTE)为4个字节长,记录该页表项对应的页帧号(PFN),以及描述该页帧使用状态和保护限制的一些标志位。为此,Windows 2000的一个虚拟地址被划分成三部分:页目录索
14、引、页表索引、页内位移量。Windows 2000的每个页表索引项,需用4个字节表述。因此,1M个页表索引项需花费4MB这么多的存储量,这不利于内存空间的有效利用。由于虚地址是32个二进制位,每页尺寸4KB。因此在虚地址里,应用12位表示页内位移量(212=4KB),用20位表示页号。页号也称页表索引。这样,Windows 2000向用户提供的虚地址空间,最多可拥有220=1M个页面,即每个页表里会有1M个页表索引项,用来记录虚地址空间里页与物理内存页帧间的对应关系。o7.2.2 Windows 2000的地址变换机构的地址变换机构1.虚拟地址的构成虚拟地址的构成 Windows 2000通过
15、请求分页的方式,向用户提供虚拟存储。在那里,物理内存中划分的块被称为“页帧”(有的也称为“页框”),每个页帧的尺寸为4KB。.32位虚拟地址:页目录索引页表索引页内位移量3122 2112 110虚页号.页帧号GILADCdOWtWVUPCW311211 109876543210Windows页表项结构 页目录由一个个页目录项(即页目录索引,PDE)组成,记录了进程一个(小)页表的状态和位置。每个进程最多可以有1024个页表,所以页目录里最多有1K个页目录项,正好放在一个内存页帧里。每个进程有一个页目录,由它获得该进程所有(小)页表位置。系统把页目录的地址存放在进程控制块里,实施进程切换时,就
16、把该地址加载到CPU内部的一个寄存器(如CR3)中,并根据CR3里的当前内容,完成所需的地址变换。任何一个进程的页表集合,都由两部分组成:进程页表完成对私有地址空间(2GB)地址变换的任务;系统的页表实现对共享的系统地址空间(2GB)地址变换的任务。2.页表与页表项页表与页表项.无论是进程私用的进程页表,还是大家共用的系统页表,都是由一个个页表项(即页表索引,英文缩写为PTE)组成。.进程1私用的进程页表集合进程2私用的进程页表集合系统页表进程1的页目录PDE 0PDE 511PDE 512PDE n进程2的页目录PDE 0PDE 511PDE 512PDE n进程私用进程私用进程共用.3.虚
17、拟地址的变换过程虚拟地址的变换过程 每当进程切换时,操作系统将该进程的页目录地址置入专用寄存器CR3中。于是,CR3指向该进程的页目录。.页目录索引PDEPTE进程的页目录进程的页表集合物理地址一个页帧专用寄存器CR3页表索引页内位移量内存32位虚拟地址:每个进程一个页目录,含1024项每个进程最多512个私用页表,512个系统页表,每张表1024项.由虚拟地址中的页目录索引,指出页目录项(PDE)的位置,从中得到当前所需页表的位置。即从进程的页表集合里,挑选出进行地址转换所需要的页表。.由虚拟地址中的页表索引,指出所选页表里的页表项(PTE)位置。在这一页表项里,记录有虚拟页面在内存的位置。
18、.若页表项是有效的,那么记录的页帧号(PFN)是有效的,虚拟页面就在这个物理帧中;若页表项是无效的,那就会引起缺页中断,需从磁盘里调入所需要的页面。.当页表项为有效时,就根据虚拟地址中的页内位移量,找到所需数据在物理页帧中的位置,完成对它的地址重定位。进程装入内存时,根据应用类型、程序要求等原则,分配一定数量的页帧,作为它的工作集,把所需要的页面和一些后续相邻页面一起填满工作集中的页帧。Windows 2000创建一个进程时,就在内存里分配给它一定数量的页帧私用,存放运行所需要的页面。称这些页面为该进程的“工作集工作集”。工作集工作集1.o7.2.3 Windows 2000对内存的管理对内存
19、的管理.系统对进程工作集的管理(1)发生缺页时,从产生缺页的进程工作集中选择一个页面用于替换。(2)不断评估对进程页帧的分配,增加或减少分配给它的页帧数,即进程工作集的尺寸是动态变化的,以提高系统对内存整体的使用性能。(3)页帧号数据库页帧号数据库2.页帧号数据库的作用 Windows 2000是通过“页帧号数据库页帧号数据库”的数组,来管理内存中的各个页帧,跟踪它们的使用情况的。该数组拥有的元素个数,正是整个内存储器中页帧的数目。即数组元素的下标,恰好对应着内存各页帧的页帧号。“页帧号数据库”的名字,由此而得。它的每一个元素记录相应页帧的使用情况:是否空闲,所处状态,以及被谁占用等。零初始化
20、零初始化:页帧空闲,并初始化。.进程页帧的六种状态页帧号V=0,U=1一个页表项进程2的页表页帧号V=1,U=0一个页表项进程1的页表状态:有效页表项地址状态:修改页表项地址状态:后备页表项地址一个元素一个元素页帧号数据库一个元素(1)有效有效:一个进程正在使用该页帧,它在系统某个进程的工作集里。因此,必定有一个有效的页表项指向它。(2)空闲空闲:页帧处于空闲,但含有不确定的数据。(3)后备后备:已从某进程工作集撤除,原先页表中的页表项已被设置为无效,但是“页帧号”没有变,仍然指向该页帧。(4)修改修改:已从某进程工作集中撤除,原先页表中的页表项已设置为无效,但“页帧号”没有变,仍然指向该页帧
21、。(5)坏死坏死:该页帧产生奇偶校验错,或其他硬件错误,不能再参与分配。(6).进程页表与页帧数据库的关系 系统由进程页表表项里的“页帧号”,就可以知道该页与内存里的哪一个页帧相对应;由页帧号数据库元素里的页表项地址,就可以知道这个页帧与哪个进程的哪一个页表里的表项相对应。若所需的不是一个零初始化页帧,那就先去查空闲帧链表;若空,则去查后备帧链表。在决定要把后备帧链表里记录的一帧分配出去前,须从页帧号数据库的元素回溯,找到进程页表里相关的表项(它的状态是V=0,U=1),清除其里面的“页帧号”,以断绝这个页表项与该页帧的联系。这样,才能保证分配的安全。要求存储分配时,若要的是一个零初始化页帧,
22、那么就先试图从初始化帧链表中得到一个可分配页帧;若该链表空,则从空闲帧链表中选取一帧并将其初始化;若空闲帧链表也空,那么就改为从后备帧链表中选取一帧并将其初始化;如此等等。7.2.4 Windows 2000的页面调度的页面调度1.Windows 2000的取页策略的取页策略 所谓“取页策略取页策略”,即是指决定何时把一个页面从磁盘调入内存。Windows 2000采用请求调页法和集群法结合的形式,把所需要的页面装入内存。即当线程产生缺页中断时,系统不仅把所需的页装入,也把它附近的一些相邻页一起装入。2.Windows 2000的置页策略的置页策略 当缺页中断时,系统必须确定把虚拟页面放入到物
23、理内存的什么地方。这就是所谓的“置页策略置页策略”。具体策略如下所述。.若必须把一个处于修改状态的页帧分配出去,那就先将该页帧的内容写入磁盘,然后将它链到后备帧链表里去,以便将它正确地分配出去。当进程不得不从工作集中淘汰一个页面时,如果该页面未被修改过,那么就将该页链入后备帧链表;如果页面读出后被修改过,则把它链入到修改帧链表。当撤消一个进程时,它的所有私用页面,都被链入到空闲帧链表里。若内存不满,系统会允许进程拥有尽量多的页面作为大的工作集。若进程所需页面数超过了规定的工作集最大值,那就只能从自己的工作集中移出一页,腾出空间装新的页面。在单处理机系统中,对进程工作集采用最近最久未用(LRU)
24、换页算法。创建进程时,在内存里分配一定数量的页帧(即工作集)给它,以保证其运行的需要。系统实施的是可变式的工作集策略,即根据所管理物理内存的数量,为进程规定了最小工作集和最大工作集的规模。对诸进程共享的系统虚拟空间中可分页的代码和数据,也分配一个系统工作集,也规定它可取的最小值和最大值。若线程产生缺页中断时,内存已没有空闲的页帧可供分配使用,那么就要决定把内存中的哪个页面调换(淘汰)出去。这就是所谓的“换页策略换页策略”。3.Windows 2000的换页策略的换页策略.缺页中断时,先检查进程的工作集大小和系统当前空闲内存的数量。如有可能,系统就允许进程把自己的工作集规模增加到最大值(如果有足
25、够的空闲页帧,也可以超过这个最大值)。但如果内存紧张,那就只能在工作集内进行页面替换,而不是增加工作集中的页面。7.3 Windows 2000的文件管理的文件管理o7.3.1 Windows 2000文件系统综述文件系统综述1.Windows 2000的文件系统模型的文件系统模型 Windows 2000文件系统属于核心态的执行体,它与I/O管理器紧密相联。设备驱动程序位于I/O管理器的最底层,由它直接对设备进行I/O操作。中间驱动程序与设备驱动程序一起,为输入/输出提供更强的处理功能。文件系统驱动程序(FSD)从用户那里接收特定的文件操作请求,把I/O完成的结果返还给用户。文件系统驱动程序
26、中间驱动程序设备驱动程序HAL物理设备用户程序的I/O请求 I/O 管 理 器 执 行 体2.磁盘卷与簇磁盘卷与簇.磁盘是用来实现文件系统的外部存储介质。所谓“卷卷”,是指磁盘上的分区(一张软盘也可被视为一个存储卷)。分区是磁盘的基本组成部分,是能够被格式化和单独使用的逻辑单元。.若直接把磁盘扇区作为磁盘管理和读/写的单位,会大大增加系统的负担,降低工作效率。因此,文件系统总是以簇为单位来划分和管理存储空间。所谓“簇”,是指若干个物理扇区的集合。簇的大小随磁盘卷的尺寸而不同,但总是把簇取成是物理扇区的整数倍,而且通常是2的幂次。文件分配表文件分配表1和文件分配表和文件分配表2:每个磁盘卷都安排
27、两个文件分配表,它们的内容完全相同,一个作为另一个的备份,必要时起恢复的作用。一个磁盘卷上有多少簇,文件分配表FAT就有多少个表项。FAT文件系统利用文件分配表的表项,记录对应簇的使用情况,也记录一个文件使用了数据存储区里的哪些簇,形成该文件的文件分配链。FAT文件系统借助所谓的“文件分配表文件分配表”来管理磁盘存储空间,创建和使用文件。由FAT管理的磁盘卷,分为五个区域:引导区,文件分配表1,文件分配表2,根目录区,以及数据存储区。FAT文件系统 3.Windows可直接支持的文件系统可直接支持的文件系统.引导区文件分配表1文件分配表2根目录区数据存储区(1)引导区引导区:该区里存放的是引导
28、程序,以及有关该卷的总信息。(2)(3)根目录区根目录区:用于存放该卷根目录下各子目录或文件相应的目录项内容。(4)数据存储区数据存储区:具体存放文件以及子目录内容的区域,它占据了整个卷的绝大部分存储空间。.NTFS文件系统 NTFS是一种具有较好容错性和安全性的全新文件系统,NTFS也以簇作为磁盘空间分配和回收的基本单位。一个文件总是占用存储空间里的整数个簇。.虚拟簇号和逻辑簇号 NTFS文件系统按簇的尺寸划分文件的虚拟空间,这样的顺序号,称“虚拟簇号虚拟簇号(VCN)”;把整个卷中所有的簇从头到尾进行顺序编号,称为逻辑簇号逻辑簇号(LCN)。主控文件表 NTFS把卷上磁盘存储区分成两个部分
29、,其中大约12%的空间给主控文件表(MFT)使用,余下的88%的空间被分配用于存储各种文件。主控文件表是NTFS卷结构的核心,最重要的系统数据,它包含了卷中存储的所有文件的信息。0123456文件A的虚拟簇号(VCN):文件A:01234561115861331001234567891011 12 13 14 15磁盘的逻辑簇号(LCN):磁盘卷:4.Windows的本地的本地FSD和远程和远程FSD Windows 2000是网络操作系统,因此它的文件系统驱动程序(FSD)可分为本地FSD和远程FSD两种。前者允许用户访问自己计算机上的文件和数据,后者允许用户通过网络访问远程计算机上的文件和
30、数据。12%88%文件存储区主控文件表(MFT)区.本地FSDI/O管理器应用程序接口文件系统驱动程序(FSD)存储设备驱动物理磁盘用户态核心态物理设备 NTFS型文件系统,其卷的第一个扇区是启动扇区,由它来确认卷上文件系统的类型,确定该文件系统主控文件表(MFT)所在的位置,并对卷实施各种一致性检查。因此,当用户应用程序访问某个卷时,是通过I/O管理器调用本地的FSD,完成对卷的识别。随后,FSD通过设备驱动程序,将用户对卷的I/O请求转交给物理设备,并具体完成。.远程FSD应用程序I/O管理器远程FSD(重定向器)用户态核心态存储设备驱动远程FSD(服务器)用户态核心态本地FSD物理磁盘物
31、理设备客户端服务器端 远程FSD由客户端FSD与服务器端FSD组成。客户端FSD在收到来自应用程序的I/O请求后,将其转换为互联网文件系统的协议命令,通过远程FSD(重定向器),完成与服务器端远程FSD(服务器)间的通信。服务器端FSD的监听网络命令在接到互联网文件系统协议命令后,把它转交给服务器端的本地FSD处理,实现用户对远程计算机上数据的访问。当属性值能直接存放在MFT元素里时,称其为“常驻属性常驻属性”。大文件或大目录所含的属性,有时可能用一个MFT元素放不下。那么,NTFS就会在MFT之外给它们分配存储区域。这样的存储区域,称为一个“扩展扩展”。属性值存储在扩展中而不是在MFT元素中
32、的属性,被称为“非常驻属性非常驻属性”。MFT数组开头的16个元素,是预留记录NTFS的16个特殊文件的,它们统称为是“元数据文件元数据文件”。在这16个元数据文件元素的后面,才是普通文件和目录文件的元素。MFT是一个数组,是以数组元素为记录构成的文件。MFT中每个元素都是1KB。在NTFS里创建一个文件时,就在MFT存储区里开辟一个1KB大小的元素,用于记录该文件的有关信息。即只要是存于NTFS卷上的文件,在MFT里都有一个元素与之对应。由于MFT也是一个文件,因此在MFT里也有一个元素与MFT这个文件相对应。.o7.3.2 NTFS的主控文件表的主控文件表1.NTFS的主控文件表的主控文件
33、表MFT.2.MFT的元素结构的元素结构 MFT中的每个元素,是由一系列的“属性,属性值”对组成。在MFT的第5个元素$AttrDef里,列出该卷能支持的所有文件属性。并不是所有的属性都会出现在MFT元素中,有的属性是每个MFT元素必须包含的,比如“标准信息”、“文件名”等;有的属性则是可选的。.用户对某文件有I/O请求时,通过查找该文件MFT元素中的文件索引表,得到VCN所对应的LCN,并计算出真实的簇物理地址,这样就可以启动设备完成具体的输入/输出任务了。1.NTFS文件的结构文件的结构o7.3.3 NTFS文件和目录的结构文件和目录的结构 NTFS文件系统中,文件采用的物理结构是索引式的
34、。即如果一个文件很小,那么文件内容就直接存放在其相应的MFT元素中;如果文件很大,在1KB的MFT元素里存放不下,那就在MFT中形成一张索引表,记录分配给该文件的磁盘簇(也就是前面提及的“扩展”)。文件名标准信息起始的VCN号起始的LCN号簇数046126213641746425一簇012345678910VCN:LCN:12621263126412651364136517461747174817491750.2.NTFS目录的结构目录的结构 NTFS系统中,小目录的MFT元素将对所含的文件名及子目录名进行排序,然后保存在索引根属性里。对于大的目录,其MFT元素没有足够的空间存储大目录的文件名
35、索引。这时,一部分索引在MFT的索引根属性里,另一部分则只有出现在扩展中。这种扩展称为“索引缓冲区”。NTFS把索引根和索引缓冲区维系在一起,形成一棵所谓的B+树。索引根属性中除了包含B+树当前的第一级文件名外,还包含指向下一级索引缓冲区的指针。日志文件分成两个区域,“重启动区域”里存储重启动时所需的信息,系统失败后就从这里读取必要的信息。由于重要,所以安排有两个相同的副本:副本1和副本2。“无限记录区域”用于随时存放系统运行过程中的各种日志记录,以供恢复时使用。所谓文件系统的“可恢复性可恢复性”,即指由于突然断电或软件故障的发生,系统崩溃后致力于恢复时,能确保磁盘卷结构上记录的数据不被丢失,
36、不受损坏。NTFS是采用基于事务的日志文件技术,来达到这一目的。文件和目录的数据最终都是存储在磁盘上。但为了加快访问速度,系统在运行过程中,会把它们的部分内容暂时保存在内存,到适当时机再对磁盘进行刷新或回写。内存中的这部分信息,当然更为新鲜。但是,如果计算机突然崩溃,就可能会引起数据的丢失或不一致。o7.3.4 NTFS对可恢复性的支持对可恢复性的支持1.“可恢复性可恢复性”的含的含义义.2.NTFS的日志文件及日志文件服务程序的日志文件及日志文件服务程序 副本1副本1日志记录重启动区域无限记录区域.MFT的第3个元素是“日志文件($LogFile)”。系统运行时,NTFS会随时在日志文件中记
37、录下影响NTFS卷结构的各种操作。万一系统陷于崩溃时,NTFS卷能够以此得到尽可能的恢复(注意,所恢复的只是文件系统卷的数据,而不是用户数据)。.日志文件中可存放多种类型的记录,最为主要的有:“更新”记录,“检查点”记录,“事务表”记录,以及“脏页表”记录。它们在系统的恢复过程中,起到重要作用。为了实现可恢复性,在重新启动时NTFS将对磁盘上的日志文件进行三次扫描:分析扫描,重做扫描,撤消扫描。所谓“分析”扫描,即是在系统崩溃时的日志文件的两个检查点之间进行扫描,把居于其中的脏页表记录和事务表记录复制到内存,加以分析。确定进行重做扫描和撤消扫描的开始位置。3.可恢复性的实现可恢复性的实现 日志
38、文件服务(LFS)程序是NTFS中的一组核心态程序,NTFS通过LFS来管理和访问日志文件,完成对日志文件的打开、写入、向前、向后、更新等操作的。.(1)(2)(3)所谓“重做”扫描,即是根据分析扫描确定的重做位置,按照更新记录里的重做信息,完成对事务子操作的重做。所谓“撤消”扫描,即是根据分析扫描确定的撤消位置,按照更新记录里的撤消信息,完成对事务子操作的撤消。脏页表更新记录更新记录事务表检查点记录更新记录检查点记录分析扫描的进行方向检查点操作起点检查点操作终点7.4 Windows 2000的设备管理的设备管理o7.4.1 Windows 2000设备管理综述设备管理综述1.Windows
39、 2000 I/O系统的结构系统的结构 显示器CD-ROM磁带磁盘键盘打印机鼠标应用程序应用程序应用程序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的线程相关联的队列里
40、,形成IRP队列。在整个I/O处理过程中,都是通过“包”来驱动的:IRP从一个组件移动到另一个组件,并激活该组件的工作,最终完成所需要的I/O操作。因此,IRP是在每个阶段控制如何处理I/O操作的关键数据结构。中断服务程序中断服务程序(ISR):在设备发出中断时,经内核中断调度程序的识别,把控制转给相应的中断服务程序。为了提高系统的并行工作能力,Windows 2000对中断服务程序做如下的安排:把中断服务程序要完成的功能一分二,一部分执行尽可能少的关键性操作,仍称其为中断服务程序(ISR),让它运行在高中断请求级上;让余下的中断处理部分运行在低中断请求级上,称为延迟过程调用程序(DPC)。添
41、加设备程序添加设备程序:用于支持即插即用(PnP)管理器的操作,提供识别并适应计算机系统硬件配置变化的能力。初始化程序初始化程序:在系统初启完成、驱动程序被加载到内存时,I/O管理器就要执行驱动程序的初始化程序,以完成各种初始化工作。IRP由两个部分组成:固定部分(即标题)和I/O堆栈。固定部分存放诸如I/O请求的类型(读或写)和大小(读写数据的个数),是同步请求还是异步请求,指向输入/输出缓冲区的指针,以及随着请求处理过程的进展而变化的状态等信息。I/O堆栈由多个堆栈存储单元组成,所含单元数是不定的,与处理这一请求所涉及的驱动程序数目有关,每个单元里存放着一个处理该IRP的驱动程序。.I/O
42、请求包 (IRP)结构:标题I/O堆栈单元nI/O堆栈单元2I/O堆栈单元1固定部分I/O堆栈3.驱动程序的组成驱动程序的组成.一组功能调用程序一组功能调用程序:实现驱动程序提供的主要功能,如打开、关闭、读取、写入等。I/O管理器根据I/O请求生成IRP后,通过这些功能调用程序执行具体的I/O操作。.对大容量设备(如磁盘、磁带等)是使用多层驱动程序结构。即I/O请求先是由I/O管理程序发送给文件系统驱动程序。经过这一层处理后,才由I/O管理程序发送给设备驱动程序,由它最后完成I/O。对于面向字符的设备(鼠标、显示器、键盘、打印机),大都使用单层设备驱动程序结构来完成用户的I/O请求,即I/O管
43、理程序直接把I/O请求发送给有关的设备系统驱动程序进行处理。4.驱动程序的分层驱动程序的分层.显示器键盘打印机鼠标I/O系统服务I/O管理程序设备驱动程序:设备:.网络服务器CD-ROM磁带驱动器磁盘驱动器I/O系统服务I/O管理程序文件系统驱动程序:设备驱动程序:设备:延迟过程调用程序延迟过程调用程序(DPC):这是对ISR功能的延续,完成大部分中断处理的善后工作。比如完成对I/O的初始化,启动排在设备I/O等待队列里的下一个I/O操作等。因此,延迟过程调用程序(DPC)运行在低中断请求级上。.启动启动I/O程序程序:驱动程序通过自己的启动I/O程序,实现系统与设备间的数据传输。.所谓“异步
44、I/O操作”,即是指用户线程发出一个 I/O请求、并把该请求交给 I/O系统去处理的时候,发出请求的线程并不是处于等待处理完成的状态,而是仍可继续自己的其他某些工作。等到系统将该I/O处理完毕,再把结果传递给相应的线程。所谓“同步同步I/O操作操作”,即是指用户线程发出一个I/O请求后,将该请求交给I/O系统去处理,自己则处于等待服务完成的状态。I/O管理器接受请求后,通过调用相应的设备驱动程序,完成数据处理,并将结果传输给等待线程。于是,线程又可以投入运行了。在采用同步I/O操作方式时,I/O操作完成在先,控制返回线程在后。图中的虚线,表示越过中断处理程序。o7.4.2 Windows 20
45、00 单层驱动程序的单层驱动程序的I/O处理处理1.同步同步I/O操作与异步操作与异步I/O操作操作.发出I/O请求的线程等待设备驱动程序中断处理程序硬件数据处理用户空间内核空间时间发出I/O请求的线程设备驱动程序中断处理程序硬件数据处理用户空间内核空间时间 标有的步表示打印机设备驱动程序进行中断处理,将有关结果存入IRP后,把IRP发送给I/O管理程序。标有的步表示I/O完成,打印机发出中断请求。标有的步表示打印机设备驱动程序接到IRP后,一是接收有关的I/O参数,另一是启动打印机,执行I/O操作。标有的步表示I/O管理器为请求创建一个IRP,发送给打印机设备驱动程序。标有的步表示接受用户线
46、程发出的I/O请求后,环境子系统去调用I/O系统服务中的NtWriteFile(file_handle,char_buffer)程序,提出请求的用户线程等待I/O的结束。假定用户线程以同步的方式,向打印机的写缓冲区中存入若干字符,打印机连接在计算机的并行端口,由单层打印驱动程序控制。2.单层驱动程序单层驱动程序I/O请求的实现请求的实现.应用程序应用程序应用程序I/O系统服务I/O管理程序打印机设备驱动程序打印机4完成I/O,产生中断5处理中断,将有关信息填入IRPIRPIRP2创建IRP,发送到设备驱动程序3传送IRP中的参数6完成IRP,返回成功或失败状态1NtWriteFile(file
47、_handle,char_buffer)用户态系统态.标有的步表示请求完成,把结果和状态返回用户,撤消相应IRP。标有的步表示由于打印机连接在计算机的并行端口上,通过查中断分配表,得到该设备的中断服务程序(ISR)入口地址,这个中断服务程序应该在设备驱动程序里。标有的步表示中断服务程序(ISR)执行完毕,一面把中断请求级别恢复到中断发生前,另一面把一个DPC排入DPC队列,以在适当时机得以运行。Windows 2000维持一张“中断分配表中断分配表”,该表以中断源的中断请求级(IRQL)作为索引,每个表项存放相应的中断服务程序(ISR)入口地址。oWindows 2000两级中断处理过程两级中
48、断处理过程1.中断处理的第一阶段:中断处理的第一阶段:ISR延迟过程调用程序(DPC)中断服务程序(ISR)功能调用程序启动I/O程序中断服务程序(ISR)中断分配表IRQL:电源故障时钟设备并行端口调度/DPC正常执行发出中断信息,请求处理由中断分配表得到中断服务程序(ISR)地址中断处理完毕,DPC排队设备驱动程序2DPC3DPC1DPC队列DPC打印机.标有的步表示打印机发出中断信号请求处理。.标有的步表示“调度/DPC”的中断请求级低于ISR。当系统降低中断请求级、并低于“调度/DPC”时,若这时DPC队列不空,就执行排在前面的DPC,产生一个软中断,请求系统服务。2.中断处理的第一阶段:中断处理的第一阶段:DPC延迟过程调用程序(DPC)中断服务程序(ISR)功能调用程序启动I/O程序中断服务程序(ISR)中断分配表IRQL:电源故障时钟设备并行端口调度/DPC正常执行中断请求级(IRQL)降低,出现DPC中断由中断分配表得到延迟过程调用程序(ISR)地址DPC完成中断服务,启动下一个I/O请求设备驱动程序56IRP34设备请求队列IRP4DPCDPCDPC程序入口打印机DPC.标有的步表示通过查中断分配表,得到相应设备的DPC程序入口地址。标有的步表示执行了DPC程序,表明整个中断处理结束。于是,启动排在打印机设备请求队列里的下一个I/O请求。