fat32文件系统

使用"DOC分区"体系时,磁盘的第一个,就是0号扇区被称为主引导记录扇区,也成为主引导记录MBR。

MBR主引导记录由446(0x1BE)个字节的引导代码,64字节的主分区(4个)表及两个字节的签名值“55 AA”组成。

MBR扇区只包含4个分区表项,最多只能描述4个分区。

所有支持文件系统的操作系统,如果支持fat的话,都会在mount的时候去判断,MBR是不是有效的,如果不是有效的话,表明mount失败。

数据在写入磁盘或从磁盘读取数据时每次操作的数据量称为数据单元,它的大小在建立文件系统时确定,在FAT文件系统中称为簇cluster。一个数据单元由若干连续的扇区组成,大小总是2的整数次幂个扇区。簇的最大值为64个扇区,即32KB。

每个扇区都会有一个LBA地址,也就是物理地址,每个物理卷内的扇区又有一个物理卷地址,在逻辑卷内部的扇区会有一个逻辑卷地址。

一个文件前后相邻的两个数据单元在物理上的存储地址可能是不连续的,但它的逻辑文件地址一定是连续的。

FAT文件系统的数据结构中有两个重要的结构:文件分配表和目录项。

FAT文件系统的每一个文件和文件夹都被分配到一个目录项,目录项中记录着文件名,大小,文件内容起始地址以及其他的一些元数据。

在FAT文件系统中,文件系统能够的数据记录在引导扇区中(DBR)。引导扇区位于整个文件系统的0号扇区,DBR中记录着文件的起始位置,大小,FAT表个数及大小等相关信息。

只有存储用户数据的数据区使用簇进行管理,所有簇都位于数据区。其他文件系统管理数据区域是不以簇进行管理的,这部分区域使用扇区地址进行管理。文件系统的起始扇区为0号扇区。

FAT12,FAT16的根目录虽然也属于数据区,但是他们并不由簇进行管理,也就是说FAT12,FAT16的根目录是没有簇号的,他们的2号簇从根目录之后开始。

FAT文件系统将引导代码与文件形同数据结构融合在一起,而不像Unix文件系统那样各自存在,引导扇区的前三个字节为一个由机器代码构成的跳转指令,以使CPU越过跟在后面的配置数据跳转到配置数据后面的引导代码。

FAT32文件系统引导扇区的512字节中,90-509字节为引导代码,而FAT12/16则是62-509字节为引导代码。同时FAT32还可以利用引导扇区后的扇区空间存放附加的引导代码。

一个FAT卷即使不是可引导文件系统,也会存在引导代码。

对文件系统来说,FAT表有两个重要作用:描述簇的分配状态以及标明文件或目录的下一簇的簇号。

一个文件的起始簇号记录在它的目录项汇总,该文件的其他簇则用一个簇链结构记录在FAT表中。如果要寻找一个文件的下一簇,只需要查看该文件的目录项中描述的起始簇号所对应的FAT表项,如果该文件只有一个簇,则此处的值为一个结束标记;如果该文件不止一个簇,则此簇的值是它的下一个簇的簇号。

在FAT文件系统中,寻找第一簇(即2号簇)的位置就是寻找数据区的开始位置,这并不是一件容易的事,因为它不是位于文件系统开始处,而是位于数据区。在数据区前面保留区域和FAT区域,这两个都不不使用FAT表进行管理。因此,数据区以前的区域只能使用扇区地址(逻辑卷地址),而无法使用簇地址。

根目录在文件系统创建时即已经被创建,其目的就是存储目录或文件的目录项。每个目录项的大小为32字节。

文件系统刚被创建时,还没有存储任何数据时,根目录下没有任何内容,文件系统只是根目录分配了一个簇的空间(通常为2号簇),将结束标记写入该簇对应的FAT表项,表示该簇已经被分配使用。

子目录在存储过程中根据需要由用户建立的,随着子目录建立的同时,会为其分配的簇空间开始处建立两个目录项来描述子目录本身和其父目录的信息,以使字符目录间建立联系。

每个文件或子目录都分配有一个大小为32字节的目录项。

一个目录项是否被分配使用它的第一个字节来描述/对于已经分配使用的目录项,它的第一个字节是文件名的第一个字符,而文件或目录被删除后,它对应的目录项的第一个字节将被置为0xE5。

FAT32文件系统在为文件分配短文件名目录项的同时会为其分配长文件名目录项。文件系统在为文件创建长文件名类型的目录项时,并没有舍弃原有的短文件名目录项,具有LFN的文件同时也有一个常规的SFN类型目录项。之所以需要SFN,是因为LFN目录项只包含文件的名字,而不包含任何相关事件,大小及其是簇号等信息,这些信息仍然需要用SFN目录项来记录。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值