收藏 分享(赏)

第四章 文件系统.ppt

上传人:oil007 文档编号:3499320 上传时间:2018-11-06 格式:PPT 页数:40 大小:514KB
下载 相关 举报
第四章 文件系统.ppt_第1页
第1页 / 共40页
第四章 文件系统.ppt_第2页
第2页 / 共40页
第四章 文件系统.ppt_第3页
第3页 / 共40页
第四章 文件系统.ppt_第4页
第4页 / 共40页
第四章 文件系统.ppt_第5页
第5页 / 共40页
点击查看更多>>
资源描述

1、2018/11/6,操作系统,第四章 文件系统,FAT文件系统 NTFS文件系统 Windows文件系统驱动程序(FSD),知识是需要沉淀的;思想也是在不断的学习、磨练中走向成熟的;而技术也是在不断的创造中开拓的,2018/11/6,操作系统,FAT(File Allocation Table,文件分配表)文件系统是为DOS设计的文件系统。为了向后兼容,也为了方便用户升级,Windows 仍然提供对FAT的支持 每一种FAT文件系统都用一个数字来标识磁盘上簇号的位数。 例如,FAT12的簇标识为12位(二进制数),这限制了它的单个分区最多只能存储2 12(=4096)个簇,而FAT 12在Wi

2、ndows 2000/XP中的簇大小在512B与8KB之间,这意味着FAT12卷的大小至多只有32M。 FSD:WinntSystem32DriversFastfat.sys,FAT文件系统,2018/11/6,操作系统,多级目录,无用户访问权限控制,磁盘文件卷结构,FAT12与FAT16,2018/11/6,操作系统,文件卷(volume)信息:记录在引导记录的扇区中。包括:簇大小,根目录项数目,FAT表大小,磁盘参数(每道扇区数,磁头数),文件卷中的扇区总数,簇编号长度等 逻辑扇区号:三元组(柱面号,磁头号,扇区号)一个文件卷中从0开始对每个扇区编号,优点:屏蔽了物理磁盘参数的不同 允许同

3、时访问的文件卷数目上限可以由config.sys文件中的LASTDRIVE= 语句指定 簇(cluster):由若干个扇区组成。在一个文件卷中从0开始对每个簇编号。,FAT12与FAT16,2018/11/6,操作系统,FAT12/FAT16 Boot Sector/Boot Record Layout.,FAT12与FAT16,2018/11/6,操作系统,每个FAT表项所占位数是簇编号的位数,其值是(以FAT12为例): 0:表示该簇空闲 FF7h:物理坏扇区 FF8hFFFh:表示该簇是文件的最后一个簇 其他值:表示该簇被文件占用,而且表项中的值是文件下一个簇的编号。,FAT表:两个镜像

4、,互为备份。文件卷中的每个簇均对应一个FAT表项,文件分配采用链式分配方法。,FAT12与FAT16,2018/11/6,操作系统,目录:是目录项的顺序文件(即大小相同的记录序列),不对目录项排序。 若目录中包含的文件数目较多,则搜索效率低。 每个目录项大小为32字节,其内容包括:文件名(8+3个字符),属性(包括文件、子目录和文件卷标识),最后一次修改时间和日期,文件长度,第一个簇的编号。 在目录项中,若第一个字节为 E5h,则表示空目录项;若为 05h,则表示文件名的第一个字符为 E5h。 文件名不区分大小写,2018/11/6,操作系统,Directory Entry Layout,FA

5、T12与FAT16,2018/11/6,操作系统,主要应用于Windows 9x系统 FAT32的根目录区(ROOT区)不再是固定区域、固定大小,而是可以看作数据区的一部分, 采用与子目录文件相同的管理方式。根目录下的文件数目不再受最多256的限制。 目录项仍占32字节,可以是文件目录项、子目录项、卷标项(仅根目录有)、已删除目录项、长文件名目录项等。 也支持长文件名格式 无法支持高级容错特性,不具有内部安全特性,因而仍然无法达到高性能文件系统的要求,FAT32,2018/11/6,操作系统,NTFS文件系统,NTFS为改进的多级目录结构,支持文件别名; NTFS文件由多个文件属性构成,每个属

6、性由属性名和属性流(stream, 简单字节队列)组成;用户可自定义属性; NTFS支持用户权限管理: 有5种权限划分:读、写、运行、删除和修改权限; 支持按用户、用户组分配权限; NTFS文件支持数据压缩功能; NTFS卷结构支持容错功能;,NTFS的技术特点,2018/11/6,操作系统,NTFS磁盘结构,NTFS具有众多优点,这主要是因为它在磁盘上独特的实现方法 如何划分磁盘 如何组织文件与目录 如何存储文件属性与数据 如何压缩文件数据等,2018/11/6,操作系统,NTFS磁盘结构:卷,卷是建立在磁盘分区上 一个磁盘可以有多个卷,一个卷也可以有多个磁盘组成 (已格式化过的)卷上的数据

7、可分为:元数据和用户数据,2018/11/6,操作系统,NTFS磁盘结构:簇,簇作为磁盘空间分配和回收的基本单位 簇的大小是用户在使用Format命令或其他的格式化程序格式化卷时确定的。簇因子随卷的大小而不同,但都是物理扇区的整数倍,通常是2的幂, NTFS使用LCN(Logical Cluster Number,逻辑簇号)和VCN(Virtual Cluster Number,虚拟簇号)来进行簇的定位。 LCN是对整个卷中所有的簇从头到尾所进行的简单编号。 VCN是对属于特定文件的簇从头到尾进行编号,以便于引用文件中的数据。,2018/11/6,操作系统,NTFS磁盘结构:主控文件表,MFT

8、(Master File Table,主控文件表)是NTFS卷结构的核心,是NTFS中最重要的系统文件,包含了卷中所有文件的信息。 MFT是以文件记录数组来实现的,每个文件记录的大小都固定为1KB。卷上的每个文件(包括MFT本身)都有一行MFT记录。 MFT开始的16个元数据文件是保留的。在NTFS中只有这16个元数据文件占有固定的位置。每个这样的元数据文件都有一个以“$“开头的文件名称,不过该符号是隐藏的。16个元数据文件之后则是普通的用户文件和目录。,2018/11/6,操作系统,NTFS磁盘结构:主控文件表,0:$Mft:MFT本身 1:$MftMirr:MFT镜像 2:$LogFile

9、:日志文件 3:$Volume:卷文件 4:$AttrDef:属性定义表 5:$:根目录 6:$Bitmap:位图文件 7:$Boot:引导文件 8:$BadClus:坏簇文件 9:$Secure:安全文件 10:$UpCase:大写文件 11:$Extended metadata directory:扩展元数据目录 12,13,14,15:预留 15:其他用户文件和目录,2018/11/6,操作系统,NTFS磁盘结构:主控文件表,2018/11/6,操作系统,NTFS磁盘结构:文件引用号,每个文件都有一个64位(bit)的、称为文件引用号(File Reference Number)的唯一标

10、识。 文件引用号由两部分组成: 一是文件号。文件号为48位(bit),对应于该文件在MFT中的位置。 二是文件顺序号。文件顺序号随着每次文件记录的重用而增加,这是为了让NTFS进行内部一致性检查。,2018/11/6,操作系统,NTFS磁盘结构:文件记录,NTFS文件是属性/属性值的集合。文件数据就是未命名属性的值,其他文件属性包括文件名、文件拥有者、文件时间标记等。 每个属性由单个的流(stream)组成,即简单的字符序列。 NTFS提供对属性流的各种操作:创建、删除、读取(字节范围)以及写入(字节范围)。 读写操作一般是针对文件的未命名属性的,对于已命名的属性则可以通过已命名的数据流句法来

11、进行操作。,2018/11/6,操作系统,NTFS文件是属性的集合,通常所说的文件内容是指未命名数据属性流; 例:我们定义两个数据属性:ntfile(数据)和ntfile:data(自定义数据)。在向FAT复制时,自定义属性会丢失。 echo testdata ntfile echo testuser defined data ntfile:data more ntfile more ntfile:data copy ntfile e:ntfile (E:为NTFS文件系统) copy ntfile c:ntfile (C:为FAT文件系统) more e:ntfile more e:ntfi

12、le:data more c:ntfile more c:ntfile:data,NTFS磁盘结构:文件记录,2018/11/6,操作系统,NTFS磁盘结构:文件记录,NTFS卷上文件的常用属性(并不是所有文件都有所有这些属性)。 $VOLUME_INFORMATION $VOLUME_NAME $STANDARD_INFORMATION $FILE_NAME $SECURITY_DESCRIPTOR $DATA $INDEX_ROOT $INDEX_ALLOCATION $BITMAP $ATTRIBUTE_LIST $OBJECT_ID $REPARSE_POINT $EA $EA_INF

13、ORMATION $LOGGED_UTILITY_STREAM,2018/11/6,操作系统,NTFS磁盘结构:文件名称,NTFS路径名中的每个文件名/目录名的长度可达255个字节,可以包含Unicode字符、 多个空格及句点。,2018/11/6,操作系统,NTFS磁盘结构:常驻属性与非常驻属性,当属性值能直接存放在MFT中时,该属性就称为常驻属性(resident attribute)。有些属性总是常驻的,这样NTFS才可以确定其他非常驻属性。例如,标准信息属性和索引根就总是常驻属性。 如果属性值能直接存放在MFT中,那么NTFS对它的访问时间就将大大缩短。 小文件或小目录的所有属性,均可

14、以在MFT中常驻。小文件的未命名属性可以包括所有文件数据。小目录的索引根属性可以包括其中所有文件和子目录的索引。 大文件或大目录的所有属性,就不可能都常驻在MFT中。,2018/11/6,操作系统,NTFS磁盘结构:常驻属性与非常驻属性,如果一个属性(如文件数据属性)太大而不能存放在只有1KB的MFT文件记录中,那么NTFS将从MFT之外分配区域。这些区域通常称为一个延展(run)或一个延伸(extent),它们可用来存储属性值,如文件数据。如果以后属性值又增加,那么NTFS将会再分配一个延展,以便用来存储额外的数据。值存储在延展中而不是在MFT文件记录中的属性称为非常驻属性(nonresid

15、ent attributes)。 在标准属性中,只有可以增长的属性才是非常驻的。对文件来说,可增长的属性有数据、属性列表等。标准信息和文件名属性总是常驻的。,2018/11/6,操作系统,NTFS磁盘结构:常驻属性与非常驻属性,2018/11/6,操作系统,NTFS磁盘结构:索引,索引根属性将相应目录中的文件名和子目录名进行排序 。 对于一个大目录,文件名实际存储在组织文件名的固定4KB大小的索引缓冲区中。 索引缓冲区是通过B树数据结构实现的。 索引分配属性包含了索引缓冲区的VCN到LCN映射 位图属性跟踪在索引缓冲区中哪些VCN是在使用而哪些是空闲的。,2018/11/6,操作系统,NTFS

16、磁盘结构:数据压缩,压缩稀疏文件: 稀疏文件是指相对于文件大小而言只有少量非零数据的文件。 NTFS只给那些包含非零数据的延展分配磁盘空间 当程序从压缩文件中读取数据时,NTFS通过检测该位置是否有VCN到LCN的映射来决定该数据是不是零数据。 若有映射,则为非零数据,需要从磁盘上读取; 若没有映射即存在尚未分配的“空洞”(unallocated hole),则为零数据,就直接返回零数据。,2018/11/6,操作系统,NTFS磁盘结构:数据压缩,压缩非稀疏文件 NTFS是以16个簇为压缩单元来进行一般文件的压缩的。 当NTFS向压缩文件写数据时,它确保每个延展都以一个虚拟16簇边界开始。因此

17、每个延展中VCN都是以16的倍数开始的,并且延展的长度不大于16。,2018/11/6,操作系统,Windows文件系统驱动程序(FSD),Windows文件系统模型 Windows FSD体系结构 文件系统操作与FSD NTFS FSD,2018/11/6,操作系统,Windows文件系统模型,2018/11/6,操作系统,Windows FSD体系结构(本地),2018/11/6,操作系统,Windows FSD体系结构(远程),2018/11/6,操作系统,文件系统操作与FSD,显式文件I/O 高速缓存迟后写 高速缓存超前读 内存脏页写 内存缺页处理,2018/11/6,操作系统,文件系

18、统操作与FSD:显式文件I/O,CreateFile(ReadFile,WriteFile)(Win32API) NtCreateFile 通过ObOpenObjectByName解析名称字符串 通过IopParseDevice创建IRP(I/O request packet,I/O请求包) 通过IoCallDriver将IRP交给合适的FSD以创建文件,2018/11/6,操作系统,文件系统操作与FSD:显式文件I/O,ReadFile =NtReadFile=将已打开文件的句柄转换成文件对象指针=检查访问权限=创建IRP读请求=通过IoCallDriver将IRP交给合适的FSD =如可在

19、高速缓存,则应检查PrivateCacheMap =如有效则表示该文件已有私有高速缓存映射结构; =如无效则表示尚没有私有高速缓存映射结构,需要调用CcInitializeCacheMap来初始化 =通过CcCopyRead从高速缓存中读取数据。如果数据还不在高速缓存中,CcCopyRead会引起缺页中断,并间接调用MmAccessFault。,2018/11/6,操作系统,文件系统操作与FSD: 高速缓存迟后写 高速缓存超前读,高速缓存迟后写: 高速缓存管理器的迟后写线程定期地对高速缓存中已被修改的页面进行写操作。这是通过调用内存管理器的MmFlushSection函数来完成的。具体地说,M

20、mFlushSection通过IoAsynchronousPageWrite将数据送交FSD。 高速缓存超前读: 高速缓存管理器的超前读线程负责提前读数据。超前读线程通过分析已作的读操作,来决定提前读多少。提前读线程是通过缺页中断来完成的。,2018/11/6,操作系统,文件系统操作与FSD: 内存脏页写 内存缺页处理,内存脏页写: 内存脏页写线程定期地清洗缓冲区。该线程通过IoAsynchronousPageWrite来创建IRP写请求,这些IRP被标识为不能通过高速缓存,因此它们被FSD直接送交到磁盘存储驱动程序。 内存缺页处理: 以上在进行显式I/O操作与高速缓存提前读时,都会用到内存缺

21、页处理。另外,只要应用程序访问内存映射文件且所需页面不在内存时,也会产生内存缺页处理。内存缺页处理MmAccessFault通过IoPageRead向文件所在文件系统发送IRP请求包来完成。,2018/11/6,操作系统,NTFS FSD,2018/11/6,操作系统,NTFS FSD,应用程序通过NTFS FSD创建和存取文件 : 首先进行有关使用权限的检查,只有合法用户的请求,才会被执行。 然后I/O管理器将文件句柄转换为文件对象指针。 最后通过文件对象指针来获得磁盘上的文件。,2018/11/6,操作系统,NTFS FSD,2018/11/6,操作系统,NTFS FSD,通过文件对象指针来获得磁盘上的文件: 通过文件对象指针获得文件属性的SCB(System Control Block,流控制块),每个SCB表示了文件的单个属性,并包含如何获得该属性的信息。 同一个文件的所有SCB都指向一个共同的数据结构FCB(File Control Block,文件控制块),FCB包含一个指向MFT(Master File Table,主文件表)中的该文件记录的指针,通过该指针获得文件访问权。,

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

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

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


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

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

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