1、Windows 2000/XP的结构和特点的结构和特点 Windows 2000/XP进程管理进程管理Windows 2000/XP设备管理设备管理 Windows 2000/XP文件管理文件管理 Windows 2000/XP内存管理内存管理 用户态与核心态用户态与核心态微内核设计微内核设计可移植性可移植性支持对称多处理机支持对称多处理机使用面向对象的程序设计概念使用面向对象的程序设计概念 I/O管理程序 高速缓存 对象 虚拟存储器 进程/线程 安全访问 局部过程 窗口 管理程序 管理程序 管理程序 管理程序 监控程序 调用LPC 管理程序用户态核心态文件系统 设备驱动程序内核硬件抽象层HA
2、L硬件接口(总线、中断、时钟、DMA、Cache控制等)系统线程核心态可调用接口NTDLL.dll打印服务程序事件记录器服务管理程序Windows登录会话管理程序POSIXOS/2Win32用户应用程序子系统动态连接库系统进程服务进程应用程序环境子系统POSIX应用fork()Win32子系统POSIX子系统CreateProcess()本地过程调用 进 程 对象 管理器 管 理 器Windows2000内核Windows2000的进程关系 Windows 2000/XP中的进程是资源分配的基本单位, Windows 2000/XP中的进程作为对象来管理,可以通过句柄引用进程对象。为了支持Wi
3、n32、OS/2、POSIX等多种运行子环境, Windows 2000/XP核心的进程之间没有任何关系(包括父子关系)各运行环境子系统分别建立、维护和表达各自的进程关系。进程对象访问令牌VADVADVAD线程线程线程访问令牌对象对象对象句柄列表虚拟地址空间描述Windows2000中的W i n32进 程 结构虚拟地址空间描述表对象句柄列表线程块列表Windows2000/XP进程的特点:进程作为对象实现一个进程可含有多个线程进程对象与线程对象都具有同步能力 Windows2000/XP的进程控制由各环境子系统相应的系统调用来实现 Win32子系统用于进程控制的系统调用有:uCreatePr
4、ocess创建新进程及其主线程uExitProcess终止进程及其所有线程,并关闭所有的对象句柄。uTerminateProcess终止进程及其所有线程,不关闭所有的对象句柄,用于异常情况下的进程终止。nWindows2000的线程是内核支持线程。系统调度以线程为单位。线程上、下文(TCB)主要包括:线程控制块核心栈用户栈运行就绪等待时间片用完线程调度请求I/O或等待某事件I/O完成或事件完成退出初始化接纳完成转换激活挂起备用抢先创建和初始化线程对象切换 CreateThread 创建线程 ExitThread 结束当前线程 SuspendThread 挂起指定线程 ResumeThread
5、激活指定线程互斥对象(Mutex)就是互斥信号灯,用于对线程的互斥访问。相关API: CreateMutex 创建一个互斥对象,返回一个对象句柄 OpenMutex 打开并返回一个已存在的互斥对象句柄 ReleaseMutex 释放对互斥对象的占用临界区对象(CriticalSection)用于一个进程中多个线程对临界区的互斥访问。相关API: InitializeCriticalSection 对临界区对象进行初始化。 EnterCriticalSection 等待占有临界区的使用权。 TryCriticalSection 以非等待方式申请临界区的使用权。 LeaveCriticalSect
6、ion 释放对临界区的使用权。 DeleteCriticalSection 删除与临界区有关的所有系统资源。信号量对象(Semaphore)资源信号灯,初始值0n,用于限制并发访问的线程数。相关API: Create Semaphore 创建一个信号量对象,在输入参数中指定初始值和最大值,返回一个对象句柄。 Open Semaphore打开并返回一个已存在的信号量对象句柄 Release Semaphore 释放对信号量对象的占用事件对象(Event)相当于触发器。通知线程某事件的出现。 CreateEvent 创建一个事件对象,返回一个对象句柄 OpenEvent 打开并返回一个已存在的事件
7、对象句柄 SetEvent 指定事件对象为可用状态 ResetEvent 指定事件对象为不可用状态 PulseMutex 指定事件对象为可用状态 WaitForSingleObject 在指定时间内等待指定对象为可用。 WaitForMultipleObject 在指定时间内等待多个对象为可用共享存储区可用于进程间的大数据量通信。参与通信的各个进程可以任意读写共享存储区。使用共享存储区时需要进程互斥和同步机制来确保数据的一致性。 Windows2000采用文件映射机制实现共享存储区。相关API有: CreateFileMapping 为指定文件创建一个文件映射对象,返回对象指针 OpenFil
8、eMapping 打开一个命名的文件映射对象,返回对象指针。 MapViewOfFile 把文件映射到本进程的地址空间,返回映射地址空间的首指针。 FlushViewOfFile 把映射地址空间的内容写到物理文件中去。 UnmapViewOfFile 拆除文件与本进程地址空间之间的映射关系。 CloseHandle 关闭文件映射对象。管道是一种在进程间以字符流方式传送的通信通道。Windows2000提供有名管道和无名管道。无名管道的系统调用有:(UNIX和OS/2均有) CreatePipe 创建一个无名管道并得到一个读句柄和一个写句柄。 ReadFile 读管道。 WriteFile 写管
9、道。命名管道是服务器进程和客户进程间的一条通信通道,可实现不同机器上的进程通信。系统调用有: CreateNamedPipe 在服务器端创建并饭后一个命名管道句柄。 ConnectNamedPipe在服务器端等待客户的请求。 CallNamedPipe 客户进程建立与服务器的管道连接。 ReadFile WriteFile 读写管道(阻塞方式)。 ReadFileExWriteFileEx读写管道(非阻塞方式)。Windows2000提供的邮件槽是一种不定长、不可靠的单向消息通信机制。消息发送不需要接受方准备好,随时可以发送。邮件槽也采用客户-服务器机制,只能从客户端发往服务器。相关系统调用:
10、 CreateMailslot 在服务器方创建邮件槽,返回其句柄。 GetMailslotInfo 服务器查询邮件信息。 SetMailslotInfo 服务器设置读操作等待期限。 ReadFile 服务器读邮件槽。 CreateFile 客户方打开邮件槽。 WriteFile 客户发送消息。套接字是一种网络通信机制,它通过网络在不同的计算机上的进程间进行双向通信。套接字采用的报文格式为:可靠的字符流不可靠的报文。通信模式为:客户-服务器模式对等模式。 TCP/IP协议是广泛使用的网络通信协议。 Windows2000/XP的线程调度特征的线程调度特征 Windows2000/XP 实现了一个
11、基于优先级的多处理机调度系统。 通常线程可在任何可用处理器上运行,但也可以限制某线程只能在某处理器上运行。 亲合处理器集合允许用户通过Win32调度函数选择其偏爱的处理器。线程调度的触发事件有:线程调度的触发事件有:一个线程进入就绪态一个线程时间片用完一个线程的优先级被改变一个正在运行的线程改变了它的亲合处理器集合103130131086424高级中上中级中下空闲实时15实时优先级范围1631可变优先级范围115零页线程Windows2000内部内部使用使用32个线程优先个线程优先级。级。 16个实时优先级个实时优先级(1631):):用户可以通过Win32编程接口改变实时优先级的级别,但必须
12、有此权限。 15个可变线程优个可变线程优先级(先级(115):):可通过Win32编程接口指定线程的优先级为:高级、中上、中级、中下、空闲。一个系统线程优一个系统线程优先级(先级(0):):仅用于对系统中空闲物理页面进行清零的零页线程。时间配额长度 前后台变化 前后台线程时间配额提升时间配额时间配额是一个线程从进入运行状态到系统检查是否有其它优先级相同的线程需要开始运行之间的时间总和。时间配额的计算时间配额的计算 Windows2000/XP专业版中线程开始时的时间配额为6 Windows2000/XP服务器版专业版中线程开始时的时间配额为36每次时钟中断,时钟中断服务例程从线程的时间配额中减
13、少一个固定值3(X86单处理机时钟中断间隔为10毫秒) 。时间配额的控制:时间配额的控制:在系统注册表中有一个注册项Win32PrioritySeparation,允许用户指定时间配额的长度和前后台线程的时间配额是否加长。03130进程进程就绪位图线程线程线程线程空闲位图线程调度器就绪队列31 031 0基本优先级当前优先级处理器偏好时间配额缺省基本优先级缺省处理器偏好缺省时间配额线程调度器数据结构线程调度器数据结构主动切换主动切换抢先抢先时间配额用完时间配额用完运行结束运行结束线程优先级20191817161514运行状态阻塞状态就绪状态主动切换主动切换181716151413运行状态就绪状
14、态线程的抢占调度线程的抢占调度从阻塞状态唤醒线程优先级1514131211运行状态就绪状态时间配额用完时的线程调度时间配额用完时的线程调度线程优先级 I/O操作完成后线程的优先级提升等待事件和信号量后的线程优先级提升前台线程在等待结束后的优先级提升图形用户接口线程被唤醒后的优先级提升对处理机饥饿线程的优先级提升 注:windows2000/XP永远不会提升实时优先级(1631)的线程的优先级。 Windows2000/XP基于Intel 80 x86及Pentium CPU芯片Intel 80 x86及Pentium CPU既支持分段,也支持分页。可根据需要构成以下四种存储管理方式:不分段也不
15、分页。这种方式可用于高性能的控制器分页不分段。这种方式成为一个单纯的页式存储管理系统,UNIX/386、Linux 、 Windows2000/XP采用这种方式分段不分页段页式存储管理机制。OS/2等采用这种方式Windows2000/XP采用请页式内存管理,内存管理器是Windows2000/XP执行体的一部分,在Ktoskrnl.exe文件中。它由以下几部分组成:一组执行体系统服务程序服务程序,用于虚拟内存的分配、回收和管理。这些程序以Win32API或设备驱动程序的形式出现。一个转换无效和访问错误陷阱处理程序陷阱处理程序,用于解决硬件检测到的内存管理异常,并负责将虚拟页面装如内存。运行在
16、六个不同的核心态系统线程上下文中的关键组件组件。u工作集管理器u进程/堆栈交换程序u已修改页面写入器u映射页面写入器u废弃段线程u零页线程应用程序(2GB)操作系统(2GB)80000000FFFFFFFF7FFFFFFF00000000应用程序(3GB)操作系统(1GB)C0000000FFFFFFFFBFFFFFFF00000000 范围范围 大小大小 功能功能0 x00 xFFFF 64KB 拒绝访问区域,帮助程序员避免不正确的指针引用。0 x100000 x7FFEFFFF 2GB-至少192KB 进程私有地址空间0 x7FFDE0000 x7FFDEFFF 4KB 线程环境块TEB0
17、 x7FFDF0000 x7FFDFFFF 4KB 进程环境块PEB0 x7FFE00000 x7FFE0FFF 4KB 共享的用户数据页面 0 x7FFE10000 x7FFEFFFF 60KB 拒绝访问区域0 x7FFF00000 x7FFFFFFF 64KB 拒绝访问区域,阻止线程跨过用户/系统边界传送缓冲区。地址地址功能功能80000000系统内核、HAL和未分页系统空间A0000000系统映射视图(Win32k.sys图形驱动)、会话空间A4000000附加的系统页表项PTEC0000000进程的页面和页目录C0400000超空间和进程工作集列表C0800000没有使用,不可访问C0
18、C00000系统工作集列表C1000000系统高速缓存E1000000分页系统空间EB000000系统页表项PTE、未分页系统空间扩充FFBE0000故障转储信息FFC00000HAL使用页表索引字节索引页目录索引10位10位12位注:PAE运行物理地址扩展系统采用三级页表页目录索引 页表索引 页内位移31 22 21 12 11 0CR3PDEPTE页目录页表内存Page Directory Entry,PDE Page Table Entry,PTE PDE 511进程1的页目录PDE 512PDE nPDE 0PDE 511进程2的页目录PDE 512PDE nPDE 0系统页表进程1的
19、页表进程2的页表进程没有访问的系统页表PTE 0PTE 0PTE nPTE 0进程页目录中,最多有512个进程页表项且最多有512个系统页表项。系统空间的内容被多个进程所共享。页框号 U F Cw Gl L D A Cd Wt O W V31 12 11 10 9 8 7 6 5 4 3 2 1 0标志标志 名称名称 含义含义U (第11位) 转换 该在内存的后备链表或修改链表中,不是有效页。F (第10位) 原型 表示该页为共享页。Cw (第9位) 保留Gl (第8位) 全程符 变换对全部进程有效,0该页是私有页,1该页是共享页。L (第7位) 保留D (第0位) 修改位 此页是否已被修改过
20、,0为未写,1为写过。A (第5位) 访问位此页是否已被访问过,0为未访问,1为访问过。Cd (第4位) 禁用高速缓存 禁止访问此页的高速缓存。Wt (第3位) 通写 在多处理环境下可写。写入此页时禁用高速缓存,内存页 面数据修改时立即刷新磁盘对应数据。O (第2位) 所有者 此页是否可在用户态下访问,还是只能在核心态下访问。W (第1位) 写 0表示页只读,1表示页可读/写。V (第0位) 有效 表示变换是否映射到物理内存的实际页面。为无效, 为有效访问无效页时产生缺页中断。当页表项的有效位有效位V为“有效”时,进行正常的地址变换;对于无效的页表项,可以有以下四种情况:未知未知:页表不存在或
21、需要的页表项为0。此时应检查虚拟地址描述符(VAD)以确定这个虚拟地址是否已经提交。如果已经提交,则建立页表,以表示新近提交的地址空间。在页文件中:在页文件中:所需的页尚未调入内存,在磁盘文件中。请求零页:请求零页:请求零页时,页面管理器从零页链表中取出一页分配给进程。如果此时零页链表为空,页面管理程序负责从空闲链表中取出一页,将其初始化后予以分配。转换转换:此时页表项的第11位U为1,表示所需的页面在内存的后备链表(原来是该进程驻留集中)或修改链表中。将所需的页从其当前的页表中删除,并将该页添加到驻留集中。页文件是提供虚拟存储器的磁盘空间。如果计算机的内存为64MB,磁盘上有100MB的页文
22、件,则认为该计算机的虚拟存储器是164MB。 Windows 2000/XP缺省的页文件大小为20MB,系统引导时创建。要增加页文件的大小,可以使用控制面板中的服务程序。范围:200000002000FFFF保护限制:读/写继承:有范围:000020000000FFFF保护限制:只读继承:无范围:4E0000004F000000保护限制:可写继承:有范围:320000003300FFFF保护限制:只读继承:无范围:7AAA00007AAA00FF保护限制:读/写继承:无虚拟地址描述符虚拟地址描述符VAD:描述哪些虚拟地址是空闲的,哪些已使用。目的是存储保护,当线程访问VAD之外的地址时,系统可
23、作出访问违法的提示。文件对象区域对象指针数据区控制区域映像区控制区域文件对象高速缓存映射虚拟地址描述符区域对象结构 区域对象的用途区域对象的用途加载和执行.exe和.dll文件。访问磁盘上的数据文件。实现多个进程间的数据共享。无效:指向原型页表项有效:PFN 5无效:在页文件中有效:PFN 5段结构页目录页表原型页表PFN 5内存共享计数=2原型页表项地址PFN 5页框号数据库表u如果一个页面被两个以上的进程所共享,内存管理器利用原型页表项来映射这些共享页面。u当区域对象首次被创建时,原型页表项同时被创建。u当进程首次访问区域对象中的页面时,内存管理器利用原型页表项中的信息添入进程页表。u为了
24、记录访问共享页面的进程数,在页框号数库中设有一个计数器。当没有进程访问时,页面就标记为“无效”。u当共享页面有效时,进程页表项和原型页表项均指向同一物理页。u当共享页面无效时,进程页表中的页表项指针指向原型页表项。内存大小 代码页面簇的大小 数据页面簇的大小 其它页面簇的大小19MB8 48内存大小 缺省的最小工作集的大小 缺省的最大工作集的大小32MB50 345缺页故障读取的簇的大小缺省的最大和最小工作集的大小当发生缺页时,内存管理器以簇为单位读入若干页。可以用Win32函数SetProcessWorkingSet改变工作集大小的缺省值。页框号页框号PFN数据库数据库描述了物理内存中各个页
25、的状态。页面可以是以下8种状态之一:活动活动:有一个有效的页表指向它。过渡过渡:对该页面正在进行I/O。后备后备:该页被使用过但现在已被删除,页表项仍指向其物理页。修改修改:该页被使用过但现在已被删除,页面在使用中被修改过且未写到磁盘。页表项仍指向其物理页。修改不写入修改不写入:与修改页面同,但被标记为不用写回磁盘。空闲空闲:页是空闲的,但有不确定的数据。零初始化零初始化:页是空闲的,并且已经由零页初始化线程初始化。坏坏:页面产生了错误,不可用。修改页写回器零初始化线程后备页链表修改页链表空闲页链表零初始化页链表坏页链表进程工作集应用服务WIN32系统服务WMI服务安装组件用户模式的即插即用管
26、理器WDM WMI例程即插即用管理器I/O管理器电源管理器.inf文件.cat文件注册表用户态核心态SCSI驱动程序键盘驱动程序磁盘、磁带驱动程序PCI总线驱动程序硬件抽象层(HAL)I/O系统驱动程序鼠标驱动程序lI/O管理器管理器:把应用程序和系统组件连接到各种虚拟的、逻辑的和物理的设备上,并定义了一个支持设备驱动程序的基本框架。lPnP(即插即用)管理器即插即用)管理器:通过与I/O管理器和总线驱动程序的协同工作来检验硬件资源的分配,并检验硬件设备的添加和删除。l电源管理器电源管理器:通过与与I/O管理器的相同工作来检验整个系统和单个硬件设备,完成不同电源状态的转换。lWMI(Windo
27、ws Management Instrumentation)支持例程支持例程。也叫做Windows 驱动程序模型WDM( Windows Driver Model)。WMI提供者,允许驱动程序使用这些支持例程作为媒介,与用户态运行的WMI服务通信。l注册表注册表:作为一个数据库,存储基本硬件设备的描述信息以及驱动程序的初始化和配置信息。l硬件抽象层硬件抽象层(HAL):I/O访问例程把驱动程序与多种多样的硬件平台隔离开来,使它们在给定的体系结构中是可移植的。用户态 APII/O系统服务 APII/O管理器核心态设备驱动程序HAL I/O服务例程驱动程序支持例程I/O设备控制器l一个典型的I/O
28、操作从应用程序调用一个与I/O操作有关的函数开始。通常会涉及I/O管理器、一个或多个驱动程序和HAL。l所有的I/O操作都是通过虚拟文件执行,隐藏了I/O操作的实现细节,为应用程序提供了统一的到设备的界面。l文件对象:文件对象:l驱动程序对象和设备对象驱动程序对象和设备对象lI/O请求包请求包对象管理器安全引用监视器本地过程调用工具虚拟内存管理器核心系统服务I/O管理器I/O管理器文件系统高速缓存系统设备驱动程序网络驱动程序4.创建文件对象5.返回对象句柄Win32应用程序Win32DLLC运行时DLL1. fp=fopen(D:myfile.dat,r)2. CreateFile(D:myf
29、ile.dat,.)3. NtCreateFile(D:myfile.dat,.)用户态用户态核心态核心态6.返回文件句柄l文件符合Windows的对象标准:它们是两个或两个以上用户态进程的线程可以共享的系统资源。l文件对象提供了基于内存的共享物理资源表示法。l当打开文件或设备时, I/O管理器将为文件对象返回句柄。C程序程序提供提供Windows2000/XP的用户态的用户态Win32提供提供Windows2000/XP的核心态的核心态IO管理器提供管理器提供读写设备控制启动I/O卸载取消功能码1功能码2功能码n驱动程序对象设备对象设备对象设备对象驱动程序操作的设备当线程打开一个文件对象时,
30、I/O管理器调用一个驱动程序。驱动程序对象代表系统中一个独立的驱动程序。设备对象在系统中代表一个物理设备、逻辑设备或虚拟设备。当一个驱动程序被加载到系统中时,I/O管理器负责创建这个驱动程序对象,并将驱动程序的入口地址放在该驱动程序对象中。lI/O请求包(Input/output Request Packet,IRP)是I/O系统用来存储I/O请求的一个数据结构。当线程调用一个I/O函数时,I/O管理器就为之创建一个IRP,来表示系统在进行I/O时要执行的操作。I/O管理器在IRP中保存一个指向调用者文件对象的指针。lIRP由两部分组成:固定部分。它包括的信息有:请求的类型和大小;是同步请求还
31、是异步请求;指向缓冲区的指针及随着请求的执行需要记录的一些状态信息。一个或多个堆栈单元。IRP堆栈单元包括一个功能码、功能特定的参数及一个指向调用者文件对象的指针。Windows 2000/XP支持多种类型的设备驱动,有核心模式的驱动,也有用户模式的驱动。核心模式的驱动程序主要有以下几种:l文件系统驱动l与PnP管理器和电源管理器有关的驱动l核心态图形驱动l总线驱动l功能驱动l过滤器驱动一个设备驱动程序是由一组调用I/O请求不同阶段的例程组成的,主要的例程有:l初始化例程l添加设备例程l一系列调度例程l启动I/O例程l中断服务例程l中断服务DPC(延迟过程调用)例程l完成例程l取消IO例程l卸
32、载例程l系统关闭通知例程l错误记录例程l同步I/O和异步I/Ol快速I/Ol映射文件I/Ol分散I/OlI/O请求传送到Win32环境子系统lWin32环境子系统调用I/O管理器的NtWriteFile服务lI/O管理器的创建IRP,并发送给设备驱动程序l启动程序启动I/O操作,传送指定数据l执行I/O,并发中断。l内核陷阱处理程序处理中断,设备驱动调用I/O管理器完成I/O并处理IRPl I/O管理器向环境子系统报告IRP完成,返回成功或错误。基本盘基本盘动态盘动态盘多分区卷多分区卷lWindows 2000/XP的外存管理是从MS-DOS演变而来的 ,Windows 2000/XP借鉴了M
33、S-DOS的分区机制,Windows 2000/XP把基于MS-DOS分区方式的盘称为基本盘。 l物理格式化,也称低级格式化l分区分区即将磁盘分成一个或多个柱面l逻辑格式化,也称高级格式化即创建文件系统,用于存储文件。l DOS将整个设备驱动放在了EPROM中,称为BIOS (Basic Input and Output System) 在BIOS中,初始引导只是其功能的一小部分。l BIOS不可能把所有OS的引导都考虑进去。因此各种OS的引导方案为:初始引导程序+引导扇区l X86的硬件系统采用的BIOS标准格式标准格式,主盘的第一个扇区中包含主引导记录主引导记录MBR。lBIOS初始引导后
34、就把控制全交给主引导记录主引导记录MBR。l硬盘“分区”把一个物理硬盘划分成多个逻辑硬盘,每个逻辑硬盘逻辑的第一个扇区都为引导扇区,分别用于不同的OS的引导多引导l整个硬盘的第一个扇区超脱了所有的逻辑硬盘之外,它不属于任何一个逻辑硬盘,被成为主引导扇区MBR。l为主引导扇区MBR存有分区(FDISK)信息,MBR不直接引导OS,而是把从分区信息中选择一个“活跃”的引导扇区。l分区表分区表记录了硬盘分区的情况,其中包括分区的类型,分区类型指定了该分区被格式化的文件系统,比如是FAT32、NTFS等,所以每个被格式化的某种文件系统的分区都有一个引导扇区引导扇区用来存储这个分区上文件系统的结构信息,
35、及OS引导程序。动态分区区域主引导记录LDM数据库1MBl动态盘是Windows 2000/XP偏爱的磁盘格式, Windows 2000/XP引入它的目的是为了创建多分区卷。l Windows 2000/XP的逻辑磁盘管理系统逻辑磁盘管理系统(Logical Disk Management,LDM)负责管理动态盘。内容表 数据库记录区 处理日志区私有头私有头备份l私有头:私有头:私有头存在于动态盘最后1MB的开始位置上, 占用一个扇区的大小,它是LDM数据库的开始标志 。l内容表:内容表:由16个扇区组成,其中包含数据库记录区的布局信息 l数据库记录区:数据库记录区:数据库记录可以是分区、磁
36、盘、组件和卷。l事物处理日志区事物处理日志区l私有头的副本私有头的副本E:100MBC:100MBD:50MBD:50MBl跨分区卷跨分区卷l条带卷条带卷RAID0l镜像卷镜像卷RAID1l RAID5lLDM数据库用于存储多分区卷的信息。l简单卷:LDM需要三个数据库记录项,分区项、组件项和卷项。l分区项:描述磁盘上的一块区域,即分区l组件项:把一个分区项和一个卷项联系起来l卷项:用来描述文件系统l多分区卷:需要的数据库记录项多于多于三个l一个跨分区卷跨分区卷需要至少两个分区项、一个组件项和一个卷项。l一个镜像卷镜像卷需要两个组件项,一个组件项描述主盘,另一个描述镜像盘。 Windows20
37、00/XP高速缓存的结构特点高速缓存的结构特点:单一集中式系统高速缓存单一集中式系统高速缓存与内存管理器相结合与内存管理器相结合虚拟块缓存虚拟块缓存Windows2000/XP系统的高速缓存管理器基于虚拟空间缓存数据,所以它管理一块系统虚拟地址空间区域。高速缓存管理器被每个地址空间区域分成256KB的槽(slot),被成为视图。视图n视图0视图1视图3视图4视图2系统高速缓存区域2区域0区域1区域0区域1区域0文件B(750KB)文件B(500KB)文件B(100KB)256KBl缓存的虚拟大小:缓存的虚拟大小: 缓存的虚拟大小与物理内存相关。若系统物理内存大于16MB,缓存虚拟大小以128M
38、B为基础,物理内存每增加4MB,则增加64MB缓存。若有64MB物理内存,则有缓存:128MB+(64MB-16MB)/4MB*64MB=896MBl缓存的物理大小缓存的物理大小系统高速缓存没有自己的工作集,而是与页缓冲池、可分页的核心代码、可分页的驱动程序代码共用一个系统工作集。l延迟写延迟写计算赃页阀值屏蔽延迟写(FILE_ATTRIBUTE_TEMPORARY )立即写(FILE_FLAG_WRITE_THROUGH )刷新被映射的文件l预先读预先读智能预读虚拟地址预读带历史信息的异步预读l快速快速I/OWindows 2000/XP的文件系统驱动程序(File System Drive
39、r,FSD)可分为本地FSD和远程FSD。本地FSD负责向I/O管理器注册自己,当访问某个卷时,I/O管理器将调用FSD来进行卷识别。当完成卷识别后,本地FSD创建一个设备对象以表示所装载的文件系统,I/O管理器通过卷参数记录管理器所创建的卷设备对象,并与FSD创建的设备对象之间建立连接。远程FSD由两部分组成:客户端FSD和服务器端FSD。客户端FSD接收来自应用的I/O请求,然后转换为网络文件系统协议命令,再通过网络发送给服务器端FSD。服务器端监听网络命令,接收网络文件系统协议命令并转交给本地FSD去执行。文件系统结构文件系统结构文件系统操作文件系统操作Windows2000/XP支持以
40、下文件系统:CDFS、UDF、FAT12、FAT16、FAT32、NTFS。CDFS:1988年制定的只读光盘文件系统。它要求:文件和目录名的必须少于32字符。目录的深度不得超过8层。UDF:1995年为DVD-ROM制定的通用磁盘格式。文件名区分大小写。文件名可以有255个字符。最长路经为1023个字符。FAT12:Windows2000使用FAT12软盘的标准格式。FAT16:1982年用于MS-DOS中, FAT16最多只能存储216个蔟。而蔟的大小为512B64KB,因此FAT16卷的大小为4GB,而Windows把它限制在2GB。FAT32Windows2000/XP支持的文件系统支
41、持的文件系统 FAT32:FAT32是对早期FAT16的增强。主要应用于Windows9X、 Windows ME系统。 FAT32最多能存储232个蔟。而蔟的大小为4KB32KB,因此FAT32理论上拥有8TB的寻址能力。 FAT32的根目录不再是固定区域,固定大小,而是可以看作数据区的一部分。因此根目录下的文件数不再受256的限制。 FAT32也支持长文件名。FAT32文件分配表包含一个卷上所有蔟的条目。文件分配表条目还定义了一个文件分配链,来连接文件和目录。文件的结尾被指定为0 xFFFF,未使用的蔟被标识为0000。0010 0000簇号 下一个簇0000 00010001 00020
42、002 00030005 00060004 00050003 FFFF0006 00080007 FFFF0008 FFFF0009 0000 文件A 起始地址0000文件目录文件B 起始地址0004文件C 起始地址0007文件分配表引导区 文件分配表1 文件分配表2 根目录 其它目录和文件FAT结构结构NTFS文件系统文件系统在Windows3.1之前,就有MS-DOS的FAT和OS/2的HPFS,伴随NT的推出,需要一个支持NT的安全性和高可靠性的文件系统。NTFS的定位是企业级的文件系统,其设计目标为:可恢复性:基于原子事务的概念。安全性:Windows2000可以指定谁能访问哪些文件和
43、目录及对它进行什么操作。NTFS的安全性来自Windows XP的对象模型。数据冗余和容错:数据采用冗余存储。支持RAID1、RAID5。多数据流基于Unicode的名称:一种16位的编码方案,支持世界上的主要语言。通用索引机制:可以索引文件属性,从而大大提高了文件管理的效率。动态坏簇重印映射POSIX支持:POSIX可移植操作系统接口。文件压缩日志记录磁盘限额硬链接与软链接加密碎片整理NTFS高级特性高级特性NTFS卷及其结构卷及其结构卷:NTFS是以卷为基础的,而卷是建立在磁盘上的。一个磁盘可以有多个卷,一个卷也可以由多个磁盘组成,如RAID阵列。簇:又称卷因子。NTFS与FAT一样,以簇
44、为磁盘空间分配和回收的基本单位。簇的大小是物理扇区的整数倍,通常是2的幂,如512B、1KB、2KB、4KB。 主控文件表 系统文件区 普通文件区主引导记录文件存储区 文件存储区MFT元数据文件MFT元数据文件备份MFTNTFS卷布局卷布局NTFS中所有的数据(包括元数据如引导程序数据及卷的分配状态位图)都存储在文件中。主控文件表MFT包含关于该NTFS卷中所有文件和文件夹的信息以及磁盘未分配空闲的信息 。MFT是NTFS卷的核心。MFT是以记录数据来实现的,每个记录的大小为1KB,卷上的每个文件至少占一个MFT记录。MFT上前16个记录是保留的,16以后是普通的用户文件和记录。若文件属性较多
45、或分散成很多碎片,可能需要几个记录来存储,则第一个记录成为“基本文件记录”。MFT占用磁盘空间的12%,并独占这部分空间。主控文件表主控文件表文件引用号文件引用号(64位):卷上的每个文件有一个文件引用号。文件引用号的前48位为文件号,对应该文件在MFT中的位置。其余的为文件顺序号,它随每次文件的重用而增加,用于一致性检查。MFT文件记录文件记录:即属性的集合,属性以流组成。文件名称文件名称:NTFS路经中的文件名的长度可达255个字符。可以包含Unicode字符、多个空格及句点。文件引用号、文件记录、文件名称文件引用号、文件记录、文件名称常驻属性:当文件较小时,文件的属性值可以全部存放在MF
46、T中,该属性成为常驻属性。每个属性总是以一个标准头开始。非常驻属性:大文件和大目录的所有属性因太大,NTFS将在MFT之外分配区域称为盘区。这部分属性称为非常驻属性。非常驻属性的特点是可动态增长,如数据、属性列表。NTFS使用逻辑簇号LCN和虚拟簇号VCN来进行簇的定位。LCN是对整个卷进行编号,卷因子乘以LCN,就是卷上物理字节的偏移量。VCN则是对属于特定文件的簇进行的编号。常驻属性和非常驻属性常驻属性和非常驻属性标准 目录名 文件索引 空信息 文件1 文件2 文件3小小目目录录的的M MF FT T记记录录 标准信息 文件名 数据 其它属性数据数据两个盘区的非常驻属性 常驻属性和非常驻属
47、性常驻属性和非常驻属性 标准信息 文件名 开始的 开始的 簇数 其它属性 VCN LCN数 据数 据VCN 0 1 2 3 4 5 6 7LCN 1278 1279 1280 1281 1300 1301 1302 1303 4 1300 4 0 1278 4非常驻属性的非常驻属性的VCNLCN映射映射 标准信息 目录名“” 文件4 文件9 文件14 其它文件 VCN到LCN转换 索引根 索引分配 位图文件0 文件1 文件3文件5 文件7文件10 文件11 文件12LCN 1355 1356 1357 1358 1049 1050 1051 1588 1589 1590VCN 0 1 2 3
48、4 5 6 7 8 9根目录的文件索引根目录的文件索引属性名属性名说明说明标准信息包括文件访问属性,如只读、存档、文件的创建时间、最近一次修改时间、有多少个目录指向该文件(硬连接)。文件名NTFS文件名的长度可达255个字符。可以包含Unicode字符、多个空格及句点。安全描述符确定哪个用户创建了该文件,哪些用户可以访问它。文件数据文件的内容。一个文件有一个默认的无名数据属性,还可以有多个命名数据属性。属性列表当一个文件需要多个MFT记录时,该文件就需要一个属性列表,其中记录每个属性在MFT中的文件引用号。索引根对目录中的所有子目录名和文件名进行索引,用于实现文件夹索引分配记录非常驻属性盘区中
49、VCN到LCN的映射,用于实现文件夹。位图信息提供在MFT记录中,分配给文件的哪些簇被使用、哪些空闲。EFS加密属性为了实现EFS而存储有关加密信息,如解码密钥、合法访问的用户列表等。NTFS常用属性说明常用属性说明 标准信息 文件名 开始的 开始的 簇数 其它属性 VCN LCN 32 1280 16 0 1200 16对于稀疏文件,NTFS只给非零数据的盘区分配磁盘空间。VCN为1631的簇即非零数据。数据压缩数据压缩 标准信息 文件名 开始的 开始的 簇数 其它属性 VCN LCN 16 1280 8 0 1200 4NTFS以16个簇为单位进行非稀疏文件的压缩。VCN为015的簇被压缩
50、后存储在4个簇中,而VCN为1631的簇被压缩后存储在8个簇中压缩非稀疏文件压缩非稀疏文件日志文件服务(LFS)是一组NTFS驱动程序中的核心态程序。LFS日志文件分成两部分:重启动区域:系统失败后的恢复过程中,NTFS将从该区域读取信息。因为其重要性,LFS保留其一个副本。无限记录区域:在重启动之后的记录,LFS利用逻辑记录号标识日志文件记录。LFS提供了许多操作来处理日志文件,如打开、写入、向前、向后、更新。NTFS的可恢复性的可恢复性NTFS通过LFS来实现可恢复性功能。NTFS在内存维护两张表:事务表:跟踪已经启动但尚未提交的事务。恢复时,必须删除这些活动事务的子操作。和脏页表:记录在