《Windows操作系统文件系统》由会员分享,可在线阅读,更多相关《Windows操作系统文件系统(83页珍藏版)》请在金锄头文库上搜索。
1、1第五章第五章 文件系统文件系统文件系文件系统的基本概念的基本概念FAT文件系文件系统NTFS文件系文件系统Windows文件系文件系统驱动程序程序(FSD)2文件系文件系统概述概述文件概念与文件概念与实现目目录概念与概念与实现文件与目文件与目录的的访问权限限Windows文件系文件系统概述概述文件系统的基本概念3信息是计算机系统中的重要资源。信息是计算机系统中的重要资源。文件系统是操作系统中的一个重要组成部分,文件系统是操作系统中的一个重要组成部分,负责信息的组织、存储和访问。负责信息的组织、存储和访问。文件系统的功能就是提供高效、快速和方便的文件系统的功能就是提供高效、快速和方便的信息存储
2、和访问功能。信息存储和访问功能。文件系统概述4文件系统的目的文件系统的目的方便的文件方便的文件访问和控制和控制:以符号名称作:以符号名称作为文件文件标识,便于用,便于用户使用;使用;并并发文件文件访问和控制和控制:在多道程系:在多道程系统中支持中支持对文件的并文件的并发访问和控制;和控制;统一的用一的用户接口接口:在不同:在不同设备上提供同上提供同样的接口,方便用的接口,方便用户操作和操作和编程;程;多种文件多种文件访问权限限:在多用:在多用户系系统中的不同用中的不同用户对同一文件同一文件会有不同的会有不同的访问权限;限;优化性能化性能:存:存储效率、效率、检索性能、索性能、读写性能;写性能;
3、差差错恢复恢复:能:能够验证文件的正确性,并具有一定的差文件的正确性,并具有一定的差错恢复恢复能力;能力;文件系统概述5文件管理的服务功能文件文件访问:文件的:文件的创建、打开和关建、打开和关闭,文件的,文件的读写;写;目目录管理管理:用于文件:用于文件访问和控制的信息,不包括文件内容和控制的信息,不包括文件内容文件文件结构管理构管理:划分:划分记录,顺序,索引序,索引访问控制控制:并:并发访问和用和用户权限限限限额(quota):限制每个用:限制每个用户能能够建立的文件数目、占用外建立的文件数目、占用外存空存空间大小等大小等审计(auditing):记录对指定文件的使用信息(如指定文件的使用
4、信息(如访问时间和用和用户等),保存在日志中等),保存在日志中(文件系统向上层用户提供的服务文件系统向上层用户提供的服务)文件系统概述6文件系统的实现功能文件的分文件的分块存存储:与外存的存:与外存的存储块相配合相配合I/O缓冲和冲和调度度:性能:性能优化化文件定位文件定位:在外存上:在外存上查找文件的各个存找文件的各个存储块外存存外存存储空空间管理管理:如分配和:如分配和释放。主要放。主要针对可可改写的外存如磁改写的外存如磁盘。外存外存设备访问和控制和控制:包括由:包括由设备驱动程序支持程序支持的各种基本文件系的各种基本文件系统如硬如硬盘,软盘,CDROM等等(文件系统要实现的功能模块文件系
5、统要实现的功能模块)文件系统概述7文件体:文件本身的信息;文件体:文件本身的信息;文件属性:文件存储和管理信息,例如:文件属性:文件存储和管理信息,例如:文件名、文件内部标识、文件存储地址、文件名、文件内部标识、文件存储地址、访问权限、访问时间等;访问权限、访问时间等;文件是具有符号名的数据项的集合。文件名是文件是具有符号名的数据项的集合。文件名是文件的标识符号。文件包括两部分:文件的标识符号。文件包括两部分:1.文件的概念文件的概念文件概念与实现82. 2. 文件的操作文件的操作打开打开:为文件文件读写所写所进行的准行的准备。给出文件路径,出文件路径,获得文件句柄得文件句柄(filehand
6、le),或文件描述符,或文件描述符(filedescriptor)。需将。需将该文件的目文件的目录项读入到内存中。入到内存中。关关闭:释放文件描述符,把放文件描述符,把该文件在内存文件在内存缓冲区的冲区的内容更新到外存上。内容更新到外存上。读、写写和和文件文件读写定位写定位:系:系统为每个打开文件每个打开文件维护一个一个读写指写指针,它是相,它是相对于文件开于文件开头的偏移地址。的偏移地址。读写指写指针指向每次文件指向每次文件读写的开始位置,在每次写的开始位置,在每次读写完成后,写完成后,读写指写指针按照按照读写的数据量自写的数据量自动后移相后移相应数数值。指围绕文件内容读写进行的文件操作。指
7、围绕文件内容读写进行的文件操作。93. 3. 文件的逻辑结构文件的逻辑结构文件结构是指文件的组织形式。文件结构是指文件的组织形式。文件结构分为文件的逻辑结构文件结构分为文件的逻辑结构(Filelogicalstructure)和文件的物理结构和文件的物理结构(Filephysicalstructure)。逻辑结构是从用户的观点出发,所看到的是独立逻辑结构是从用户的观点出发,所看到的是独立于文件物理特性的文件组织形式,是用户可以直于文件物理特性的文件组织形式,是用户可以直接处理的数据及其结构。接处理的数据及其结构。物理结构是文件在外存上具体的存储结构。物理结构是文件在外存上具体的存储结构。10文
8、件逻辑结构的设计要求:文件逻辑结构的设计要求:访问性能:便于检索;便于修改访问性能:便于检索;便于修改存储性能:向物理存储转换方便,节省空间存储性能:向物理存储转换方便,节省空间文件的逻辑结构较一般可分为记录式文件和流文件的逻辑结构较一般可分为记录式文件和流式文件两种。前者是指用户把每个文件分为若式文件两种。前者是指用户把每个文件分为若干记录单位,存取文件以记录为单位来进行的,干记录单位,存取文件以记录为单位来进行的,而后者则是指文件由字符流组成,文件内部的而后者则是指文件由字符流组成,文件内部的信息不再划分单位。信息不再划分单位。文件的逻辑结构是指从用户观点出发讨论文件内部的文件的逻辑结构是
9、指从用户观点出发讨论文件内部的逻辑结构或用户访问模式;它可以独立于在外存上的逻辑结构或用户访问模式;它可以独立于在外存上的物理存储。物理存储。3. 3. 文件的逻辑结构文件的逻辑结构114.4.文件的物理结构(文件实现)文件的物理结构(文件实现)研究如何在外部存储介质上为创建文件而分配空间,为研究如何在外部存储介质上为创建文件而分配空间,为删除文件而回收空间,以及对空闲空间进行管理。删除文件而回收空间,以及对空闲空间进行管理。空间分配策略:空间分配策略:1.连续空间分配连续空间分配2.链接空间分配链接空间分配3.索引空间分配索引空间分配12空间分配策略:空间分配策略:连续空间分配连续空间分配4
10、.4.文件的物理结构(文件实现)文件的物理结构(文件实现)磁盘空间磁盘空间目录文件名起始地址大小Hello.c22z1.cc95a.out213016311513空间分配策略:空间分配策略:链接空间分配链接空间分配4.4.文件的物理结构(文件实现)文件的物理结构(文件实现)磁盘空间磁盘空间目录文件名起始地址结束地址Hello.c24Hello.c: 2-5-10-25-19-401631155-1 102541914空间分配策略:空间分配策略:索引空间分配索引空间分配4.4.文件的物理结构(文件实现)文件的物理结构(文件实现)0磁盘空间磁盘空间目录文件名索引地址Hello.c202,7,13,
11、16,27,-1磁盘块20的内容:16311515空闲空间管理空闲空间管理空闲块位示图空闲块位示图空闲块链表空闲块链表4.4.文件的物理结构(文件实现)文件的物理结构(文件实现)16簇的大小簇的大小两个极端两个极端:大到能容:大到能容纳整个文件,小到一个整个文件,小到一个外存存外存存储块;簇簇较大大:提高:提高I/O访问性能,减小管理开性能,减小管理开销;但簇内碎片浪但簇内碎片浪费问题较严重;重;簇簇较小小:簇内的碎片浪:簇内的碎片浪费较小,特小,特别是大量是大量小文件小文件时有利;但存在簇有利;但存在簇编号空号空间不不够的的问题(如(如FAT12、16、32););文件的存储空间通常由多个分
12、立的簇组成,而每个簇文件的存储空间通常由多个分立的簇组成,而每个簇包含若干个连续的扇区包含若干个连续的扇区(sector)。5.5.文件存储单位:簇(文件存储单位:簇(clustercluster)17簇的分配方法:两种簇的分配方法:两种簇大小可簇大小可变:I/O访问性能性能较好,文件存好,文件存储空空间的的管理困管理困难(类似于似于动态分区存分区存储管理)管理)簇大小固定:文件存簇大小固定:文件存储空空间使用灵活,但使用灵活,但I/O访问性能下降,文件管理所需空性能下降,文件管理所需空间开开销较大大5.5.文件存储单位:簇(文件存储单位:簇(clustercluster)18文件卷容量与簇大
13、小的关系文件卷容量与簇大小的关系文件卷容量越大,若簇的总数保持不变即簇编号文件卷容量越大,若簇的总数保持不变即簇编号所需位数保持不变,则簇越大。缺点:簇内碎片所需位数保持不变,则簇越大。缺点:簇内碎片浪费越多浪费越多文件卷容量越大,若簇大小不变,则簇总数越多,文件卷容量越大,若簇大小不变,则簇总数越多,相应簇编号所需位数越多。如簇编号长度为相应簇编号所需位数越多。如簇编号长度为12、16、32二进制位,即构成二进制位,即构成FAT12、FAT16、FAT32。5.5.文件存储单位:簇(文件存储单位:簇(clustercluster)19目录概念与实现目目录内容内容目目录结构构目目录管理管理目录
14、是由文件说明索引组成的用于文件检索的特殊文目录是由文件说明索引组成的用于文件检索的特殊文件。文件目录的内容主要是文件访问的控制信息(不件。文件目录的内容主要是文件访问的控制信息(不包括文件内容)。包括文件内容)。201.1.目录内容目录内容文件名文件名:字符串,通常在不同系:字符串,通常在不同系统中允中允许不同的最不同的最大大长度。可以修改。有些系度。可以修改。有些系统允允许同一个文件有多同一个文件有多个个别名名(alias);文件文件类型型:可有多种不同的划分方法,如:可有多种不同的划分方法,如:有无有无结构(构(记录文件,流式文件)文件,流式文件)内容(二内容(二进制,文本)制,文本)用途
15、(源代用途(源代码,目,目标代代码,可,可执行文件,数据)行文件,数据)属性属性attribute(如系(如系统,隐含等)含等)文件文件组织(如(如顺序,索引等)序,索引等)目录的内容是文件属性信息目录的内容是文件属性信息(properties),其中的一部,其中的一部分是用户可获取的。分是用户可获取的。1. 1. 基本信息基本信息212. 地址信息存放位置存放位置:包括哪个:包括哪个设备或文件卷或文件卷volume,以及各,以及各个存个存储块位置;位置;文件文件长度度(当前和上限):以字(当前和上限):以字节、字或存、字或存储块为单位。可以通位。可以通过写入或写入或创建、打开、关建、打开、关
16、闭等操作而等操作而变化。化。1.1.目录内容目录内容224. 使用信息创建建时间最后一次最后一次读访问的的时间和用和用户最后一次写最后一次写访问的的时间和用和用户3. 3. 访问控制信息访问控制信息文件所有者(属主):文件所有者(属主):通常是创建文件的用户,通常是创建文件的用户,或者改变已有文件的属主;或者改变已有文件的属主;访问权限访问权限(控制各用户可使用的访问方式):如(控制各用户可使用的访问方式):如读、写、执行、删除等;读、写、执行、删除等;1.1.目录内容目录内容23单级目目录:整个目:整个目录组织是一是一个个线性性结构,系构,系统中的所有文中的所有文件都建立在一件都建立在一张目
17、目录表中。它表中。它主要用于主要用于单用用户操作系操作系统。它。它具有如下的特点:具有如下的特点:结构构简单;文件多文件多时,目,目录检索索时间长;有命名冲突:如重名有命名冲突:如重名(多个文件有多个文件有相同的文件名相同的文件名)或或别名名(一个文件一个文件有多个不同的文件名有多个不同的文件名)目录结构讨论目录的组织结构,设计目标是检索效率。目录结构讨论目录的组织结构,设计目标是检索效率。2.2.目录结构目录结构24二级目录二级目录:在根目录下,每个用户对应一个目录:在根目录下,每个用户对应一个目录(第二级目录);在用户目录下是该用户的文件,(第二级目录);在用户目录下是该用户的文件,而不再
18、有下级目录。适用于多用户系统,各用户而不再有下级目录。适用于多用户系统,各用户可有自己的专用目录。可有自己的专用目录。2.2.目录结构目录结构25多多级层次目次目录:或称:或称为树状目状目录。在文件数目。在文件数目较多多时,便于系,便于系统和用和用户将文件分散管理。适用于将文件分散管理。适用于较大大的文件系的文件系统管理。目管理。目录级别太多太多时,会增加路径,会增加路径检索索时间。目目录名名:可以修改。:可以修改。目目录树:中:中间结点是目点是目录,叶子,叶子结点是目点是目录或文件。或文件。目目录的上下的上下级关系关系:当前目当前目录(currentdirectory,workingdire
19、ctory)、父目父目录(parentdirectory)、子目子目录(subdirectory)、根目根目录(rootdirectory)等;等;路径路径(path):每个目:每个目录或文件,可以由根目或文件,可以由根目录开始依次开始依次经由的各由的各级目目录名,加上最名,加上最终的目的目录名或文件名来表示;名或文件名来表示;2.2.目录结构目录结构26多级目录组织2.2.目录结构目录结构27进行文件行文件访问和控制和控制时,由操作系,由操作系统自自动更新更新目目录内容内容目目录创建建mkdir,删除除rmdir,修改目,修改目录名名rename。改改变当前目当前目录chdir;目录管理是指
20、目录访问和目录属性控制。目录管理是指目录访问和目录属性控制。3.3.目录管理目录管理28文件与目录访问权限文件文件访问类型型:读read:可:可读出文件内容;出文件内容;写写write(修改(修改update或添加或添加append):可把):可把数据写入文件;数据写入文件;执行行execute:可由系:可由系统读出文件内容,作出文件内容,作为代代码执行;行;删除除delete:可:可删除文件;除文件;修改修改访问权限限changeprotection:修改文件属:修改文件属主或主或访问权限限设置文件访问权限的目的是为了在多个用户间提供有设置文件访问权限的目的是为了在多个用户间提供有效的文件共
21、享机制;效的文件共享机制;29用用户范范围类型型:指定用指定用户用用户组任意用任意用户访问类型和用型和用户范范围的的组合合:访问矩矩阵:矩:矩阵的一的一维是每个目是每个目录和文件,另一和文件,另一维是用是用户范范围,每个元素是允,每个元素是允许的的访问方式方式访问策略策略(policy):每种文件:每种文件访问方式,所允方式,所允许或或禁止的用禁止的用户范范围。可以将文件。可以将文件访问方式推广到其方式推广到其他操作如用他操作如用户管理,管理,备份,网份,网络访问等。等。文件与目录的访问权限30Windows文件系统概述Windows直接支持的文件系直接支持的文件系统包括:包括:CDFS,UD
22、FFAT12/FAT16/FAT32NTFS31Windows文件系统概述:CDFSCDFS(CDROMFileSystem,只只读光光盘文文件件系系统)是是1988年年为只只读光光盘所所制制定定的的文文件件系系统标准准。CDFS比比较简单,但是有一定的限制:但是有一定的限制:文件和目文件和目录名的名的长度必度必须少于少于32个字符。个字符。目目录树的深度不能超的深度不能超过8层。现已已过时,已被,已被UDF标准所代替。准所代替。FSD:WinRootSystem32DriversCdfs.sys32UDF(UniversalDiskFormat,通用磁,通用磁盘格式)格式)是于是于1995年
23、由年由OSTA(OpticalStorageTechnologyAssociation,光学存,光学存储技技术协会)会)为光磁光磁盘存存储媒介如媒介如DVD-ROM等所制定的,等所制定的,用来代替用来代替CDFS,比,比CDFS更加灵活。更加灵活。UDF具具有如下特点:有如下特点:文件名区分大小写文件名区分大小写文件名可以有文件名可以有255字符字符长最最长路径路径为1023个字符个字符FSD:WinRootSystem32DriversUdfs.sysWindows文件系统概述:UDF33FAT(FileAllocationTable,文件分配表)文,文件分配表)文件系统属遗留文件系统。为了
24、向后兼容,也为件系统属遗留文件系统。为了向后兼容,也为了方便用户升级,了方便用户升级,Windows2000/XP/2003仍仍然提供对然提供对FAT的支持的支持每一种每一种FAT文件系统都用一个数字来标识磁盘上簇文件系统都用一个数字来标识磁盘上簇号的位数。号的位数。例如,例如,FAT12的簇标识为的簇标识为12位(二进制数),这限制了它位(二进制数),这限制了它的单个分区最多只能存储的单个分区最多只能存储212(=4096)个簇,而)个簇,而FAT12在在Windows2000/XP中的簇大小在中的簇大小在512B与与8KB之间,这之间,这意味着意味着FAT12卷的大小至多只有卷的大小至多只
25、有32M。FSD:WinntSystem32DriversFastfat.sysWindows文件系统概述:FAT34NTFS是是Windows2000/XP的本机文件的本机文件系系统NTFS的簇标识为的簇标识为64位位文件与目录的安全性文件与目录的安全性文件与目录的压缩文件与目录的压缩文件与目录的加密文件与目录的加密文件与目录的可恢复性文件与目录的可恢复性FSD:WinRootSystem32Driversntfs.sysWindows文件系统概述:NTFS35FAT文件系统每一种每一种FAT文件系统都用一个数字来标识磁盘文件系统都用一个数字来标识磁盘上簇号的位数上簇号的位数:FAT12/F
26、AT16FAT32系统系统文件分配表中每个文件分配表中每个簇的字节数簇的字节数簇界限簇界限FAT121.5小于小于4087簇簇 FAT162界于界于4087和和65526簇之间簇之间(包括边界包括边界) FAT324界于界于65526和和268,435,456簇之间簇之间(包括边界包括边界) 36多级目录,无用户访问权限控制多级目录,无用户访问权限控制磁盘文件卷结构磁盘文件卷结构FATFAT文件系统文件系统FAT12与FAT1637字节偏移量字节偏移量(16进制进制)域长域长样值样值(16进制进制)含义含义00 3字节字节 EB 3C 90 转移指令转移指令 03 8字节字节 MSDOS5.0
27、 文本格式的文本格式的OEM名名 0B 25字节字节 BIOS参数块参数块 (BIOS Parameter Block, BPB) 24 26字节字节 扩展扩展BIOS参数块参数块(Extended BIOS Parameter Block, EBPB) 3E 448字节字节 引导代码引导代码 1FE 2字节字节 55 AA 扇区结束标记扇区结束标记引导扇区引导扇区FAT12与FAT1638引引导扇区的扇区的BIOS参数参数块包含了卷的信息,包包含了卷的信息,包括:簇大小,根目括:簇大小,根目录项数目,数目,FAT表大小,磁表大小,磁盘参数(每道扇区数,磁参数(每道扇区数,磁头数),文件卷中数
28、),文件卷中的扇区的扇区总数,簇数,簇编号号长度等度等逻辑扇区号:三元扇区号:三元组(柱面号,磁(柱面号,磁头号,扇区号)号,扇区号)一个文件卷中从一个文件卷中从0开始开始对每个扇区每个扇区编号,号,优点:点:屏蔽了物理磁屏蔽了物理磁盘参数的不同参数的不同允允许同同时访问的文件卷数目上限可以由的文件卷数目上限可以由config.sys文件中的文件中的LASTDRIVE=语句指定句指定簇簇(cluster):由若干个扇区:由若干个扇区组成。在一个文件卷中成。在一个文件卷中从从0开始开始对每个簇每个簇编号。号。FAT12与FAT1639FAT12与FAT16字节偏移量字节偏移量(16进制进制)域长
29、域长样值样值(16进制进制)含义含义0B 2字节字节 00 02 每扇区字节数每扇区字节数0D 1字节字节 08 每簇扇区数每簇扇区数0E 2字节字节 01 00 保留扇区数:从分区引导扇区到第一个文件分保留扇区数:从分区引导扇区到第一个文件分配表开始的扇区数配表开始的扇区数10 1字节字节 02 文件分配表数文件分配表数11 2字节字节 00 02 根目录项数根目录项数13 2字节字节 00 00 小扇区数:卷上的扇区数,如果该数适合于小扇区数:卷上的扇区数,如果该数适合于16位位(65535)的话的话 15 1字节字节 F8 介质类型:介质类型:F8表明为硬盘,表明为硬盘,F0表明为软盘表
30、明为软盘16 2字节字节 C9 00 每个文件分配表的扇区数每个文件分配表的扇区数18 2字节字节 3F 00 每磁道扇区数每磁道扇区数1A 2字节字节 10 00 磁头数磁头数1C 4字节字节 3F 00 00 00 隐藏扇区数隐藏扇区数20 4字节字节 51 42 06 00 大扇区数:如果小扇区数域的取值为大扇区数:如果小扇区数域的取值为0,该域,该域包含的是卷中的扇区总数包含的是卷中的扇区总数 BIOS参数块参数块(BPB)40字节偏移量字节偏移量(16进制进制)域长域长样值样值(16进制进制)含义含义24 1字节字节 80 物理磁盘号:软盘从物理磁盘号:软盘从0x00开始编开始编号,
31、硬盘从号,硬盘从0x80开始编号开始编号25 1字节字节 00 当前磁头:当前磁头:FAT文件系统不使用。文件系统不使用。 26 1字节字节 29 签名:必须是签名:必须是0x28或或0x29,以,以便被便被WindowsNT所识别。所识别。 27 4字节字节 CE 13 46 30 卷序列号:当格式化卷时创建的一卷序列号:当格式化卷时创建的一个唯一的数字。个唯一的数字。 2B 11字节字节 NO NAME 卷标:该域用于存放卷标,但是卷卷标:该域用于存放卷标,但是卷标目前是在根目录中作为一个特别标目前是在根目录中作为一个特别文件而存放的。文件而存放的。 36 8 字节字节FAT16 系统系统
32、ID:根据磁盘的格式,该域的:根据磁盘的格式,该域的取值为取值为FAT12或或FAT16。FAT12与FAT16扩展扩展BIOS参数块参数块(EBPB)41每个每个FAT表表项所占位数是所占位数是簇簇编号号的位数,其的位数,其值是是(以(以FAT12为例):例):0:表示:表示该簇空簇空闲FF7h:物理坏扇区:物理坏扇区FF8hFFFh:表示:表示该簇是簇是文件的最后一个簇文件的最后一个簇其他其他值:表示:表示该簇被文件簇被文件占用,而且表占用,而且表项中的中的值是是文件下一个簇的文件下一个簇的编号。号。FAT表表:两个镜像,互为备份。文件卷中的每个簇均:两个镜像,互为备份。文件卷中的每个簇均
33、对应一个对应一个FAT表项,文件分配采用链式分配方法。表项,文件分配采用链式分配方法。FAT12与FAT1642目目录:是目:是目录项的的顺序文件序文件(即大小相同的即大小相同的记录序列序列),不,不对目目录项排序。排序。若目若目录中包含的文件数目中包含的文件数目较多,多,则搜索效率低。搜索效率低。每个目每个目录项大小大小为32字字节,其内容包括:文件名(,其内容包括:文件名(8+3个个字符),属性(包括文件、子目字符),属性(包括文件、子目录和文件卷和文件卷标识),最后),最后一次修改一次修改时间和日期,文件和日期,文件长度,第一个簇的度,第一个簇的编号。号。在目在目录项中,若第一个字中,若
34、第一个字节为E5h,则表示空目表示空目录项;若;若为05h,则表示文件名的第一个字符表示文件名的第一个字符为E5h。文件名不区分大小写文件名不区分大小写43目录项目录项偏移偏移域长域长含义含义00h8文件名文件名08h3文件扩展名文件扩展名0Bh1文件属性字节文件属性字节0Ch10保留保留16h2最后一次修改的时间最后一次修改的时间18h2最后一次修改的日期最后一次修改的日期1Ah2起始簇号起始簇号1Ch4文件大小文件大小FAT12与FAT16Bit7-6543210保留保留归档归档目录目录卷标卷标系统系统隐藏隐藏只读只读文件属性字节文件属性字节44FAT32主要应用于主要应用于Windows
35、9x系统系统FAT32的根目录区(的根目录区(ROOT区)不再是固定区域、固定大区)不再是固定区域、固定大小,而是可以看作数据区的一部分小,而是可以看作数据区的一部分,采用与子目录文件相同采用与子目录文件相同的管理方式。根目录下的文件数目不再受最多的管理方式。根目录下的文件数目不再受最多256的限制。的限制。目录项仍占目录项仍占32字节,可以是文件目录项、子目录项、卷标字节,可以是文件目录项、子目录项、卷标项项(仅根目录有仅根目录有)、已删除目录项、长文件名目录项等。、已删除目录项、长文件名目录项等。支持长文件名格式支持长文件名格式支持支持Unicode无法支持高级容错特性,不具有内部安全特性
36、,因而仍然无法支持高级容错特性,不具有内部安全特性,因而仍然无法达到高性能文件系统的要求无法达到高性能文件系统的要求45字节偏移量字节偏移量(16进制进制)域长域长含义含义0B 2字节字节 每扇区字节数每扇区字节数0D 1字节字节 每簇扇区数每簇扇区数0E 2字节字节 保留扇区数保留扇区数10 1字节字节 文件分配表数文件分配表数11 2字节字节 根目录项数根目录项数13 2字节字节 小扇区数小扇区数/00 00 15 1字节字节 介质类型:介质类型:F8表明为硬盘,表明为硬盘,F0表明为软盘表明为软盘16 2字节字节 每个文件分配表的扇区数每个文件分配表的扇区数 00 00 18 2字节字节
37、 每磁道扇区数每磁道扇区数1A 2字节字节 磁头数磁头数1C 4字节字节 隐藏扇区数隐藏扇区数20 4字节字节 大扇区数大扇区数/总扇区数总扇区数 FAT32标准标准BPB46字节偏移量字节偏移量(16进制进制)域长域长含义含义24 4字节字节 每个每个FAT的的FAT32扇区数扇区数282字节字节 指定当前激活的指定当前激活的FAT2A 2字节字节 版本号版本号 2C 4字节字节 根目录起始簇号根目录起始簇号 30 2字节字节 指向文件系统信息扇区指向文件系统信息扇区 32 2字节字节指向引导扇区副本扇区指向引导扇区副本扇区34 12字节字节保留保留40 1字节字节物理磁盘号物理磁盘号41
38、1字节字节保留保留42 1字节字节签名:必须是签名:必须是0x28或或0x2943 4字节字节卷序列号卷序列号 47 11字节字节卷标卷标52 8字节字节文件系统文件系统ID:FAT32 扩展扩展BPBFAT3247FAT32长文件名长文件名长文件名目录项长文件名目录项偏移偏移长度长度含义含义00h1Bits0-5givetheLFNpartnumber,bit6issetifthisisthelastentryforthefile.01h101st5lettersofLFNentry.0Bh10Fh0Ch1Reservedsetto0.0Dh1Checksum.0Eh12Next6lette
39、rsofLFNentry.1Ah201Ch4Last2lettersofLFNentry.48FAT32长文件名长文件名文件名为文件名为Thequickbrown.fox,采用,采用Unicode编码编码,则则FAT32的目录项为:的目录项为:49NTFS文件系统NTFS为改改进的多的多级目目录结构,支持文件构,支持文件别名;名;NTFS文件由多个文件属性构成,每个属性由属性名文件由多个文件属性构成,每个属性由属性名和属性流(和属性流(stream,简单字字节队列)列)组成;用成;用户可可自定自定义属性;属性;NTFS支持用支持用户权限管理:限管理:有有5种种权限划分:限划分:读、写、运行、写
40、、运行、删除和修改除和修改权限;限;支持按用支持按用户、用、用户组分配分配权限;限;NTFS文件支持数据文件支持数据压缩功能;功能;NTFS卷卷结构支持容构支持容错功能;功能;NTFSNTFS的技术特点的技术特点的技术特点的技术特点50NTFS磁盘结构NTFS具有众多具有众多优点,点,这主要是因主要是因为它在磁它在磁盘上独特的上独特的实现方法。方法。如何划分磁如何划分磁盘,如何如何组织文件与目文件与目录,如何存如何存储文件属性与数据,文件属性与数据,如何如何压缩文件数据等。文件数据等。51NTFS磁盘结构:卷卷是建立在磁盘分区上卷是建立在磁盘分区上。一个磁盘可以有多个卷,一个卷也可以有多一个磁
41、盘可以有多个卷,一个卷也可以有多个磁盘组成个磁盘组成(已格式化过的)卷上的数据可分为:元数(已格式化过的)卷上的数据可分为:元数据和用户数据据和用户数据52NTFS磁盘结构:簇簇作为磁盘空间分配和回收的基本单位簇作为磁盘空间分配和回收的基本单位簇的大小是用户在使用簇的大小是用户在使用Format命令或其他的格式化命令或其他的格式化程序格式化卷时确定的。簇因子随卷的大小而不同,程序格式化卷时确定的。簇因子随卷的大小而不同,但都是物理扇区的整数倍,通常是但都是物理扇区的整数倍,通常是2的幂,的幂,NTFS使用使用LCN(LogicalClusterNumber,逻辑簇簇号)和号)和VCN(Virt
42、ualClusterNumber,虚,虚拟簇号)簇号)来来进行簇的定位。行簇的定位。LCN是是对整个卷中所有的簇从整个卷中所有的簇从头到尾所到尾所进行的行的简单编号。号。VCN是是对属于特定文件的簇从属于特定文件的簇从头到尾到尾进行行编号,号,以便于引用文件中的数据。以便于引用文件中的数据。53NTFS磁盘结构:主控文件表MFT(MasterFileTable,主控文件表)是,主控文件表)是NTFS卷卷结构的核心,是构的核心,是NTFS中最重要的系中最重要的系统文件,包含了卷中所有文件的信息。文件,包含了卷中所有文件的信息。MFT是以文件是以文件记录数数组来来实现的,每个文件的,每个文件记录的
43、大小都固定的大小都固定为1KB。卷上的每个文件(包。卷上的每个文件(包括括MFT本身)都有一行本身)都有一行MFT记录。MFT开始的开始的16个元数据文件是保留的。在个元数据文件是保留的。在NTFS中只有中只有这16个元数据文件占有固定的位个元数据文件占有固定的位置。每个置。每个这样的元数据文件都有一个以的元数据文件都有一个以$开开头的文件名称,不的文件名称,不过该符号是符号是隐藏的。藏的。16个元个元数据文件之后数据文件之后则是普通的用是普通的用户文件和目文件和目录。54NTFS磁盘结构:主控文件表0:$Mft:MFT本身本身1:$MftMirr:MFT镜像像2:$LogFile:日志文件:
44、日志文件3:$Volume:卷文件:卷文件4:$AttrDef:属性定:属性定义表表5:$:根目:根目录6:$Bitmap:位:位图文件文件7:$Boot:引:引导文件文件8:$BadClus:坏簇文件:坏簇文件9:$Secure:安全文件:安全文件10:$UpCase:大写文件:大写文件11:$Extendedmetadatadirectory:扩展元数据目展元数据目录12,13,14,15:预留留15:其他用:其他用户文件和目文件和目录55NTFS磁盘结构:主控文件表56NTFS磁盘结构:文件引用号每个文件都有一个每个文件都有一个64位(位(bit)的、称)的、称为文件引用号(文件引用号(
45、FileReferenceNumber)的唯一)的唯一标识。文件引用号由两部分文件引用号由两部分组成:成:一是文件号。文件号一是文件号。文件号为48位(位(bit),),对应于于该文件在文件在MFT中的位置。中的位置。二是文件二是文件顺序号。文件序号。文件顺序号随着每次文序号随着每次文件件记录的重用而增加,的重用而增加,这是是为了了让NTFS进行内部一致性行内部一致性检查。57NTFS磁盘结构:文件记录NTFS文件是属性文件是属性/属性属性值的集合。文件数据就是的集合。文件数据就是未命名属性的未命名属性的值,其他文件属性包括文件名、文,其他文件属性包括文件名、文件件拥有者、文件有者、文件时间标
46、记等。等。每个属性由每个属性由单个的流个的流(stream)组成,即成,即简单的字的字符序列。符序列。NTFS提供提供对属性流的各种操作:属性流的各种操作:创建、建、删除、除、读取(字取(字节范范围)以及写入(字)以及写入(字节范范围)。)。读写操作一般是写操作一般是针对文件的未命名属性的,文件的未命名属性的,对于于已命名的属性已命名的属性则可以通可以通过已命名的数据流句法来已命名的数据流句法来进行操作。行操作。58NTFSNTFS文件是属性的集合文件是属性的集合,通常所说的文件内容是指未命名数据,通常所说的文件内容是指未命名数据属性流;属性流;例:我们定义两个数据属性:例:我们定义两个数据属
47、性:ntfile(ntfile(数据数据) )和和ntfile:data(ntfile:data(自自定义数据定义数据) )。在向。在向FATFAT复制时,自定义属性会丢失。复制时,自定义属性会丢失。echo test.data ntfileecho test.data ntfileecho test.user defined data ntfile:dataecho test.user defined data ntfile:datamore ntfilemore ntfilemore ntfile:datamore ntfile:datacopy ntfile e:ntfile (E:co
48、py ntfile e:ntfile (E:为为NTFSNTFS文件系统文件系统) )copy ntfile c:ntfile (C:copy ntfile c:ntfile (C:为为FATFAT文件系统文件系统) )more e:ntfilemore e:ntfilemore e:ntfile:datamore e:ntfile:datamore c:ntfilemore c:ntfilemore c:ntfile:datamore NtReadFile=将已打开文件的句柄转换成文件对象指针将已打开文件的句柄转换成文件对象指针=检查访问权限检查访问权限=创建创建IRP读请求读请求=通过通过
49、IoCallDriver将将IRP交给合适的交给合适的FSD=如可在高速缓存,则应检查如可在高速缓存,则应检查PrivateCacheMap=如有效则表示该文件已有私有高速缓存映射结构;如有效则表示该文件已有私有高速缓存映射结构;=如无效则表示尚没有私有高速缓存映射结构,需要调用如无效则表示尚没有私有高速缓存映射结构,需要调用CcInitializeCacheMap来初始化来初始化=通过通过CcCopyRead从高速缓存中读取数据。如果数据从高速缓存中读取数据。如果数据还不在高速缓存中,还不在高速缓存中,CcCopyRead会引起缺页中断,会引起缺页中断,并间接调用并间接调用MmAccessF
50、ault。74文件系统操作与FSD:高速缓存迟后写高速缓存超前读高速缓存迟后写:高速缓存迟后写:高速缓存管理器的迟后写线程定期地对高速缓存中高速缓存管理器的迟后写线程定期地对高速缓存中已被修改的页面进行写操作。这是通过调用内存管已被修改的页面进行写操作。这是通过调用内存管理器的理器的MmFlushSection函数来完成的。具体地说,函数来完成的。具体地说,MmFlushSection通过通过IoAsynchronousPageWrite将数将数据送交据送交FSD。高速缓存超前读:高速缓存超前读:高速缓存管理器的超前读线程负责提前读数据。超高速缓存管理器的超前读线程负责提前读数据。超前读线程通
51、过分析已作的读操作,来决定提前读多前读线程通过分析已作的读操作,来决定提前读多少。提前读线程是通过缺页中断来完成的。少。提前读线程是通过缺页中断来完成的。75文件系统操作与FSD:内存脏页写内存缺页处理内存脏页写:内存脏页写:内存脏页写线程定期地清洗缓冲区。该线程通过内存脏页写线程定期地清洗缓冲区。该线程通过IoAsynchronousPageWrite来创建来创建IRP写请求,这些写请求,这些IRP被标识为不能通过高速缓存,因此它们被被标识为不能通过高速缓存,因此它们被FSD直接直接送交到磁盘存储驱动程序。送交到磁盘存储驱动程序。内存缺页处理:内存缺页处理:以上在进行显式以上在进行显式I/O
52、操作与高速缓存提前读时,都会用操作与高速缓存提前读时,都会用到内存缺页处理。另外,只要应用程序访问内存映射到内存缺页处理。另外,只要应用程序访问内存映射文件且所需页面不在内存时,也会产生内存缺页处理。文件且所需页面不在内存时,也会产生内存缺页处理。内存缺页处理内存缺页处理MmAccessFault通过通过IoPageRead向文件向文件所在文件系统发送所在文件系统发送IRP请求包来完成。请求包来完成。76NTFS FSD77NTFS FSD应用程序通过应用程序通过NTFSFSD创建和存取文创建和存取文件件:首先进行有关使用权限的检查,只有合法首先进行有关使用权限的检查,只有合法用户的请求,才会
53、被执行。用户的请求,才会被执行。然后然后I/O管理器将文件句柄转换为文件对象管理器将文件句柄转换为文件对象指针。指针。最后通过文件对象指针来获得磁盘上的文最后通过文件对象指针来获得磁盘上的文件。件。78NTFS FSD79NTFS FSD通过文件对象指针来获得磁盘上的文件通过文件对象指针来获得磁盘上的文件:通过文件对象指针获得文件属性的通过文件对象指针获得文件属性的SCB(SystemControlBlock,流控制块),每个,流控制块),每个SCB表示了文表示了文件的单个属性,并包含如何获得该属性的信息。件的单个属性,并包含如何获得该属性的信息。同一个文件的所有同一个文件的所有SCB都指向一
54、个共同的数据结都指向一个共同的数据结构构FCB(FileControlBlock,文件控制块),文件控制块),FCB包含一个指向包含一个指向MFT(MasterFileTable,主,主文件表)中的该文件记录的指针,通过该指针获文件表)中的该文件记录的指针,通过该指针获得文件访问权。得文件访问权。80通过针对软盘进行文件通过针对软盘进行文件I/O实验,了解与掌握实验,了解与掌握FAT文件系统文件系统基本要求基本要求主要实现三个函数:主要实现三个函数:函数函数physicalDisk判定逻辑驱动器判定逻辑驱动器A中磁盘的基本信息中磁盘的基本信息函数函数sectorRead根据给定的物理扇区号读取
55、磁盘的扇区根据给定的物理扇区号读取磁盘的扇区函数函数sectorDump查看磁盘的内容并把磁盘上得到的信查看磁盘的内容并把磁盘上得到的信息输出到标准输出流中。息输出到标准输出流中。编写程序调用编写程序调用physicalDisk、sectorRead和和sectorDump三个三个函数,验证其正确性。函数,验证其正确性。实验3: 软盘I/O问题81编程思路:编程思路:打开驱动器和读取驱动器信息只需要调用打开驱动器和读取驱动器信息只需要调用CreateFile和和DeviceIoControl两个函数即可。两个函数即可。读取扇区时,要注意每个扇区的长度,并根据每个扇区的读取扇区时,要注意每个扇区
56、的长度,并根据每个扇区的长度逻辑扇区号来移动文件指针。将扇区内容输出长度逻辑扇区号来移动文件指针。将扇区内容输出到屏幕时,应该将每字节按照两位到屏幕时,应该将每字节按照两位16进制数输出,排进制数输出,排列整齐。列整齐。DISK_GEOMETRY是一个重要的结构,反映了磁盘的几是一个重要的结构,反映了磁盘的几何布局何布局 实验3: 软盘I/O问题82附加要求附加要求在完成基本要求的基础上,实现一个简单的文件管理在完成基本要求的基础上,实现一个简单的文件管理器器,具有如下功能:具有如下功能: 列目录列目录 改变文件名改变文件名 删除文件删除文件 复制文件复制文件 实验3: 软盘I/O问题83文件
57、列表文件列表:顺序检查文件名,第一个字母非空格也非:顺序检查文件名,第一个字母非空格也非0xe5(表示删除),即输出其主文件名,扩展名,文(表示删除),即输出其主文件名,扩展名,文件长度等信息。件长度等信息。文件重命名文件重命名:首先检查新文件名是否已经存在,否则搜索:首先检查新文件名是否已经存在,否则搜索旧文件名,找到之后修改之。旧文件名,找到之后修改之。文件复制文件复制:首先检查新文件名是否已经存在,否则将旧文:首先检查新文件名是否已经存在,否则将旧文件的文件列表项复制到空白项,更改文件名和首文件件的文件列表项复制到空白项,更改文件名和首文件簇。然后将旧文件的文件簇序列的内容依次复制到新簇。然后将旧文件的文件簇序列的内容依次复制到新文件的文件簇,同时更新文件的文件簇,同时更新FAT。文件删除文件删除:先将根目录文件表项清空,然后将:先将根目录文件表项清空,然后将FAT中的文中的文件簇链清空。件簇链清空。实验3: 软盘I/O问题