收藏 分享(赏)

WINDOWS文件系统PPT课件.ppt

上传人:Facebook 文档编号:3835179 上传时间:2018-11-20 格式:PPT 页数:53 大小:3.51MB
下载 相关 举报
WINDOWS文件系统PPT课件.ppt_第1页
第1页 / 共53页
WINDOWS文件系统PPT课件.ppt_第2页
第2页 / 共53页
WINDOWS文件系统PPT课件.ppt_第3页
第3页 / 共53页
WINDOWS文件系统PPT课件.ppt_第4页
第4页 / 共53页
WINDOWS文件系统PPT课件.ppt_第5页
第5页 / 共53页
点击查看更多>>
资源描述

1、WINDOWS文件系统,1 什么是文件系统 2 FAT文件系统 3 NTFS文件系统 4 文件系统相关程序设计,提 纲,什么是文件系统?,如果没有文件系统 操作系统中与文件和目录相关的子系统被称为文件系统。,什么是文件系统?,文件系统基本功能: 1 文件命名 2 文件储存(磁盘空间管理等) 3 文件访问(创建、读、写、删除等),什么是文件系统?,完善文件系统需要提供的功能: 1 实现目录结构(树型目录) 2 文件系统的可恢复性 3 文件系统安全性(权限设置、文件加密) 4 坏块管理 5 磁盘配额 6 ,什么是文件系统?,文件命名空间(Name Sapace) 1、POSIX(Portalbe

2、Operating System Interface,可移植操作系统接口)。Windwos 20000、Windows XP完全支持可移植操作系统接口POSIX 1003.1。在文件系统方面,NTFS实现了POSIX 1003.1的所有要求。如: (1)大小写敏感。 (2)通过许可。当判定一个用户是否可以访问一个文件或者目录时,需要考虑路径上的所有目录的安全许可。 (3)文件改变时间。提供文件最后被访问的时间标记。 (4)硬链接。在不同的目录下不同文件名的两个文件指向相同的数据时,两个文件发生硬链接。POSIX是最大的文件命名空间,它允许除了空字符(00H)和向前的斜线 “/” 以外所有的Un

3、iconde字符集,最大的文件名长度为255, 但是有一些特例,比如冒号 “:”, 在NTFS文件系统中是有效,但在Windows操作系统是不允许的。 2、Win32。Win32是POSIX命名空间的一个子集,它使用除“*/:?|”之外的所有Unicode字符集,但注意名字不能够以“.”或空隔结束。 3、DOS。DOS是Win32命名空间的一个子集,只允许用大写字符,不能用空格,而且排除“*+,/:;?”等字符作为文件名,注意其文件名一定是这样的:1到8个字符的文件名, 然后是一个点“.”,然后是0到3个字符的扩展名。,文件命名,什么是文件系统?,文件储存(磁盘空间管理) 1、FAT文件系统以

4、FAT表的形式对磁盘空间进行管理; 2、NTFS文件系统以位图文件的形式对磁盘空间进行管理;,什么是文件系统?,文件系统的可恢复性 1、非日志文件系统 谨慎写:文件修改立即写入,其数据立即写入磁盘。(牺牲速度) 延迟写:数据并不马上写入磁盘(速度快,但不安全) 2、事务日志文件系统 基于事务日志处理模式,保证数据的一致性,什么是文件系统?,树型目录 1、FAT文件系统通过目录项实现树型结构 2、NTFS文件系统通过索引(INDEX)来实现,FAT文件系统,FAT分区的组织结构一般如左图(适用于FAT32分区)或者右图(适用于FAT12或者FAT16分区),其不同之处在于FAT32分区已经将用户

5、的根目录解释成一个普通文件,可以用访问普通文件的形式来访问根目录,而FAT12、FAT16分区的根目录的位置与大小是固定不变的,因此FAT12、FAT16的根目录的文件个数是有限的。当然这仅仅是FAT12、FAT16与FAT32文件系统许多个不同点中的一个。,FAT文件系统,引导扇区 1 引导代码 2 BPB参数,FAT文件系统,引导扇区引导扇区在文件组织结构中起着至少2个作用,一是在操作系统的引导过程起到定位操作系统系统文件,并转交执行权限从而使系统引导成功;二是其中的BPB参数确定分区大小、定位分区中其他数据的位置(如根目录(FAT12/16)、FAT区)、同时确定用户数据区的起始位置。该

6、扇区遭受破坏,分区将因为不能正常定位FAT区、根目录区、用户数据区而造成不可访问。,FAT文件系统,BPB参数(FAT32) 0BH0CH 每扇字节数0DH每簇扇区数 0EH0FH 保留扇区数 10H 磁盘FAT的个数 1CH1FH 隐含扇区数 20H23H 该分区占用的扇区数 24H27H 每个FAT占用的扇区数 2CH2FH 引导目录的第一簇,即根目录的起始簇 52H59H 文件系统标识(“FAT32”字符串) 43H46H 序列号(GetVolumeInformation可获取),FAT文件系统,BPB参数(FAT16) 偏移 字节数 说明0DH 1 每簇扇区数0EH 2 保留扇区数10

7、H 1 FAT区的个数11H 2 引导记录数,根目录所能容纳的目录项的个数16H 2 每FAT扇区数1CH 4 隐含扇区数20H 4 分区的总扇区数27H 4 卷序列号(GetVolumeInformation可获取)36H 8 文件系统标识,以明码形式显示的文件系统格式,FAT文件系统,FAT区每个FAT卷都有至少一个FAT表(一般有2相同的FAT表)构成FAT区,每个FAT表由若干个FAT项构成,每个FAT项对应着卷中每个簇的使用情况(FAT 文件系统首簇号为2),FAT文件系统,簇(Cluster)是文件数据区被划分成的具有大小相等的区域,用于磁盘文件的计量分配单位。一个簇可能有1、2、

8、4、8、16、32、64或128(必须是2的幂)个扇区构成,但系统对分区进行格式化时往往会根据分区的大小、文件系统类型,对簇的大小赋予一定的值。,FAT文件系统,簇链从2N个FAT项分别对应2N个簇,在用户对文件进行访问时,总是先访问文件的目录项,找到首簇簇号,再找到该簇号对应的FAT项,在其中得到下一簇的簇号,再在下一簇对应的FAT项中得到再下一簇的簇号一直到在FAT项中找到有文件最后一簇的标志,对该文件的访问才结束。这样就形成了一个链,称为盘簇链。,FAT文件系统,目录项(FDT)的结构 FAT卷中每个文件都有一个目录项,其中包含了该文件的一些重要信息,比如文件名、扩展名、文件大小、文件在

9、磁盘上的起始簇号、文件的一些时间信息(文件建立时间,创建时间,修改时间,访问时间等)、文件属性等 。要注意的是目录在FAT卷中也被认为是一种文件,其文件属性会被定义为目录,其起始簇号所指向的簇是一个包含若干个目录项目的目录。,FAT32中目录项描述,FAT文件系统,FAT卷树型目录的实现 假设FAT卷中有条如下文件路径: X:123456kingsoft.txt 文件系统访问过程可能如下: 1、从引导扇区获取根目录起始簇 2、在根目录中,找到123目录的目录项(访问FAT表) 3、根据123目录项信息,定位123目录在卷中的位置(访问FAT表) 4、在123目录中找到456的目录项 5、根据4

10、56目录项信息,定位456目录在卷中的位置(访问FAT表) 6、在456目录中找到kingsoft.txt文件的目录项 7、根据kingsof.txt目录项信息访问该文件(访问FAT表),FAT文件系统,FAT文件系统访问文件的过程,NTFS卷总体结构,NTFS文件系统,NTFS文件系统,主控文件表(MFT)MFT是NTFS卷结构的核心,系统通过MFT来确定文件在磁盘上的位置以及文件的所有属性,其实在NTFS系统中所有与文件相关的数据均被认为是属性,包括文件的内容。MFT是一个与文件相对应的文件属性数据库,它记录了除文件数据外的所有属性,甚至有的小文件的数据本身也包含在MFT当中。MFT由许多

11、文件记录(File Record)组成,在NTFS卷中每个文件至少有一个MFT,有些文件的文件属性如果在一个MFT中不能完全容纳则可能有多个MFT。可以看出MFT是NTFS中最为重要的系统文件,它包含了NTFS分区中所有文件的信息。,NTFS文件系统,普通文件的MFT分析 MFT头 10H类型属性(标准属性信息) 30H类型属性(文件名属性) 80H类型属性(数据属性) MFT结束标志,常驻属性与非常驻属性 常驻属性将数据存放在文件存储区 非常驻属性将数据存放在MFT中,适合小文件,可以节省磁盘空间(右图为一非常驻80H类型属性的例子),NTFS文件系统,NTFS文件系统,文件 NTFS文件系

12、统文件可以分两种 元数据文件:构造文件系统的文件,任何权限用户不可访问,不可修改, 用户文件:用户数据,NTFS文件系统,NTFS元数据文件,NTFS文件系统,$MFT 该元数据用于管理文件的主控文件表,NTFS文件系统,$LogFile 的MFT日志文件的结构非常复杂,目前其具体结构未知。原子操作的实现依赖于日志文件。,NTFS文件系统,$LogFile日志文件内容 日志文件的结构非常复杂,目前其具体结构未知。只知道它被分成了4K大小的块,每块以RCRD为开始标志,NTFS文件系统,$LogFile日志文件中记载着一个修改文件名的实例 原子操作的实现依赖于日志文件。,NTFS文件系统,Vol

13、ume 文件 该文件60H属性中记录着卷标,NTFS文件系统,$AttrDef 文件 记录所有属性定义的列表,NTFS文件系统,$AttrDef 文件内容 记录所有属性定义的列表,NTFS文件系统,“.” 文件(根目录) 是目录的树型结构的根节点,NTFS文件系统,根目录的90H属性,NTFS文件系统,$Bitmap文件,NTFS文件系统,$Bitmap文件内容,NTFS文件系统,$Boot文件MFT,NTFS文件系统,$Boot文件内容,NTFS文件系统,$Boot文件内容,NTFS文件系统,$UpCase文件MFT,NTFS文件系统,$UpCase文件内容,NTFS文件系统,$BadClu

14、s文件MFT 这个元文件用于记录卷上的所有坏簇。它是一个稀疏文件,其数据属性中只有一个指向坏簇的数据运行列表。,NTFS文件系统,树型目录的实现,目录的MFT分析 MFT头 10H类型属性(标准属性信息) 30H类型属性(文件名属性) 90H类型属性(索引根属性) A0H类型属性(索引分配属性) B0H类型属性(位图属性) MFT结束标志,NTFS文件系统,NTFS文件系统,文件索引的结构 标准索引头(在每4KB的一个索引块中有一个文件索引的标准索引头 ) 索引项(每个索引项记录了一个文件或子目录的文件名、该文件MFT号、父目录MFT号等信息),文件系统相关程序设计,Windows NT (2

15、K,XP,Vista)下扇区操作 在Windows NT、Windows 2000、Windows XP、Windows 2003等系统中要对物理硬盘进行操作,可以用CreateFile函数打开文件名为.PHYSICALDRIVE0、.c: 之类的文件。打开该文件后,可以用ReadFile或WriteFile函数像对一个普通文件一样对物理硬盘进行读或写操作。操作结束后可以用CloseHandle函数将文件关闭,同样可以用SetFilePointer函数来移动文件指针,从而对指定的扇区进行操作。,文件系统相关程序设计,Windows 9X系统下对逻辑硬盘的操作Windows 9X系统中Vwin3

16、2.VXD提供了一种让用户在Win32应用程序中调用DOS系统中断的方法,即用DeviceIoControl向其发出控制码与参数,来调用DOS系统中断。,文件系统相关程序设计,在Windows 9X系统中提供了一个新的DOS功能调用,其功能号是7305H,该功能调用是Windows 9X提供的一个新的磁盘读写功能调用,它支持所有的FAT系统,其输入参数如下。 AX为功能号7305H DS:BX为指向读写扇区的信息结构的指针 CX必须为-1 DL 表示驱动器号: 1=A:, 2=B:, 3=C:, . SI 表示读写标志: 最低位0=读, 1=写 DS:BX指向一个结构,此结构定义如下: DIS

17、KIO STRUCdwStartSector dd ? ; 起始扇区wSector dw ? ; 扇区数lpBuffer dd ? ; 数据缓冲区地址 DISKIO ENDS 在Win32系统中调用DeviceIoControl还需要把寄存器参数的值传递给Vwin32.VXD,同时Vwin32.VXD还需要把执行后的结果传回给Win32应用程序,这两个寄存器参数结构是一样的,都是以缓冲区的形式进行传递的,其结构如下: DIOC_REGISTERS STRUCreg_EBX dd ?reg_EDX dd ?reg_ECX dd ?reg_EAX dd ?reg_EDI dd ?reg_ESI d

18、d ?reg_Flags dd? ENDS 要调用DeviceIoControl函数,还需要一个参数,就是Vwin32的句柄,所以在调用DeviceIoControl函数前必须先用CreateFile打开一个文件名为 .vwin32的文件,并将返回的文件句柄作为DeviceIoControl函数的第一个入口参数。 DeviceIoControl函数中第2个输入参数为VWIN32_DIOC_DOS_DRIVEINFO时的用法如下: invoke DeviceIoControl hDevice, ;设备句柄VWIN32_DIOC_DOS_DRIVEINFO, ;INT21HlpRegs, size

19、ofRegs, ;输入数据缓冲区与长度lpRegs, sizeofRregs, ;输出数据缓冲区与长度,其实与上面的结构一样lpDwOutBytes, ;输出数据长度lpOverlapped ;同步或异步I/O(与ReadFile函数中的一样,文件系统相关程序设计,Windows 9X系统下对逻辑硬盘的操作DIOC_REGISTERS_IN_OUT drs_in;DIOC_REGISTERS_IN_OUT drs_out;unsigned char pszPathName98 = “.vwin32“DISK_IO dio;DWORD dwReaded;HANDLE hFileNumber =

20、CreateFile(const char*)pszPathName98,0, 0, NULL, 0, FILE_FLAG_DELETE_ON_CLOSE, NULL);if (hFileNumber = INVALID_HANDLE_VALUE)drs_in.reg_EAX = 0x7305; /AX=7305drs_in.reg_EBX = ,练习,char pszRootPathName4 = “C:“; char pszVolumeNameBufferMAX_PATH = “; DWORD nVolumeNameSize = MAX_PATH; DWORD dwVolumeSerial

21、Number = NULL; DWORD dwMaximumComponentLength = NULL; DWORD dwFileSystemFlags = NULL; char pszFileSystemNameBuffer20 = “; DWORD nFileSystemNameSize = 20;BOOL b GetVolumeInformation = GetVolumeInformation(pszRootPathName,pszVolumeNameBuffer,nVolumeNameSize,以上代码可以获取C盘的一些信息,如分区的卷名、卷SerialNumbe、文件系统类型等,我们完全可以分析文件系统的系统信息,来获取其中部分信息,写一个分析扇区的程序,来获取输入卷的: 卷大小 卷SerialNumbe 文件系统类型(NTFS、FAT32、FAT16) 每簇扇区数,参考文献,涂彦晖 戴士剑. 数据安全与编程技术.北京:清华大学出版社,2005 戴士剑 涂彦晖. 数据恢复技术(第2版).北京:电子工业出版社,2005,谢谢!,

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

当前位置:首页 > 中等教育 > 小学课件

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


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

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

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