当前位置: 技术问答>linux和unix
fat文件系统的问题?
来源: 互联网 发布时间:2015-02-19
本文导语: 请问哪位大侠有fat文件系统(包括fat32和fat16)的详细资料,主要 是引导扇区参数(不需要引导程序代码说明)说明,fat表和fdt详细结 构,以及fat文件系统检索机制在fat16和fat32下的区别。 有详细资料者或者这方面的...
请问哪位大侠有fat文件系统(包括fat32和fat16)的详细资料,主要
是引导扇区参数(不需要引导程序代码说明)说明,fat表和fdt详细结
构,以及fat文件系统检索机制在fat16和fat32下的区别。
有详细资料者或者这方面的高手可以给我发邮件。
非常感谢。祝每位看过这个帖子的朋友永远快乐!
是引导扇区参数(不需要引导程序代码说明)说明,fat表和fdt详细结
构,以及fat文件系统检索机制在fat16和fat32下的区别。
有详细资料者或者这方面的高手可以给我发邮件。
非常感谢。祝每位看过这个帖子的朋友永远快乐!
|
这是本人的收藏。
三点声明:1、本人对fat一窍不通,但喜欢收藏。
2、只有fat32
3、我也不想贴子这样长,但你没有留邮箱。
FAT32文件系统磁盘I/O参数揭密
作者: 邓波
Windows 98操作系统引入了FAT32文件系统,它彻底解决了FAT16文件系统存在的诸多问题。所谓FAT32文件系统实际上就是用32位数据来描述磁盘簇的分配,而传统的磁盘管理是用16个二进制位(2个字节)来描述一个簇。从操作系统的结构上进行分析,可以知道FAT32文件系统并非仅仅简单地将FAT表转换成32位(即用4个字节来描述一个簇),而是带来了磁盘I/O参数、分区和FDT表及文件系统其它方面的变化。为了彻底了解FAT32文件系统对磁盘I/O参数的修改,本文对FAT32文件系统的结构进行了深入分析,揭示了FAT32文件系统存储和管理文件的算法。读懂FAT32文件系统的磁盘I/O参数,不但可以掌握直接访问磁盘文件的方法,而且可以在更高层次上发挥操作系统的功能。
FAT32文件系统对主引导扇区的改变
主引导扇区是硬盘独有的一个磁盘控制数据存储区域,其首要功能是存储有关硬盘分区的数据,它通常位于硬盘的0磁头0柱面1扇区。由于主引导扇区存放硬盘分区的有关数据,因此又称为分区扇区。分区数据对硬盘是至关重要的,分区数据的丢失或破坏将导致硬盘上的逻辑磁盘不能被系统识别,当然也就无法访问磁盘上存储的文件和数据。
根据对FAT32文件系统主引导扇区的分析可知,FAT32文件系统的主引导扇区在保持与FAT16文件系统主引导扇区兼容的基础上,针对FAT32文件系统的特点作了适当扩展。
FAT32文件系统主引导扇区对分区表数据结构的扩展仅限于增加了3个标识32位分区的类型标志,这3个增加的分区类型标志分别为0BH、0CH和0EH,用于描述FAT32文件系统的三种分区情况。对于扩展分区,则增加了一个类型标志0FH,表示Windows 98操作系统扩展分区。类型标志为0BH表示分区是FAT32分区,最大分区容量可以达到2047GB;为0CH表示的意义与0BH相同,但是对于INT 13H指令使用扩展的逻辑块地址(LBA)方式;为0EH表示的意义与06H相同,但是对于INT 13H指令使用扩展的逻辑块地址(LBA)方式;为0FH表示的意义与05H相同(扩展分区),但是同样对于INT 13H指令使用扩展的逻辑块地址方式。使用扩展的逻辑块地址方式是为了支持容量超过8GB的大容量硬盘。
由于文件系统转化为FAT32后,分区的类型标志变化为0BH、0CH和0EH,这些新的类型标志是原来FAT16文件系统所不能识别的,所以当用户使用MS-DOS操作系统的软盘启动系统后,机器不能识别硬盘的分区数据,当然也不能对硬盘的数据进行访问。
FAT32文件系统的分区引导扇区
在Windows 98操作系统中,当文件系统从FAT16转化为FAT32后,分区引导扇区的功能和作用并没有改变,但是考虑到FAT32文件系统的特性和为了解决FAT16文件系统存在的问题,操作系统对FAT32文件系统的分区引导扇区进行了扩展。
1.分区引导扇区所占的扇区数从1个扇区扩展为6个扇区
分区引导扇区的核心功能是通过磁盘读写参数加载启动操作系统的文件,为了使加载文件的操作更加灵活,加上FAT32文件系统采用"活动"的FDT表,需要对分区引导扇区的引导程序代码进行重新的设计,同时考虑到引导程序的代码量和为今后发展保留适当的余量,FAT32文件系统将分区引导扇区所占的扇区数从1个扇区扩展为6个扇区,Windows 98使用前3个扇区作为系统的分区引导扇区,其余3个扇区保留暂未使用。
2.采用双重分区引导扇区
根据对分区引导扇区功能和作用的研究,我们知道分区引导扇区对于操作系统的启动和磁盘文件的访问具有至关重要的作用。引导程序代码的损坏将导致操作系统不能正常启动,磁盘读写参数的破坏将造成存储在磁盘上的文件不能正常读写。
由于分区引导扇区的重要性,FAT32文件系统借鉴了操作系统处理FAT表的经验,在磁盘上保留了两份分区引导扇区,并且在启动时操作系统可以对两份引导扇区进行比较,以便选择正确的引导扇区来引导系统。由于在磁盘正常工作过程中系统不再对引导扇区的程序和数据进行修改,因此备份的分区引导扇区损坏的可能性非常小。
FAT32文件系统对磁盘I/O参数的扩展
FAT32文件系统的磁盘读写参数在部分保持与FAT16文件系统磁盘读写参数兼容的基础上,为了适应FAT32文件系统的需要,对磁盘读写参数作了适当扩展,所使用的字节数也从FAT16文件系统的58个字节扩展为87个字节,FAT32文件系统的磁盘读写参数占用扇区偏移地址03H至59H的空间,各参数的具体意义如表1所示。
另外,分区引导扇区的第2个扇区作为文件系统相关参数存储标识扇区,除了保存扇区的标识信息(RraA和rrAa)外,还在偏移地址1E8H处存储了文件系统有关的信息。其中扇区偏移地址1E8H~1EBH的4个字节存储了逻辑磁盘中未使用的簇数,通常用于快速计算逻辑磁盘的剩余空间(典型的操作是在资源管理器状态栏上列出的"可用磁盘空间"参数),而1ECH~1EFH 4个字节给出了逻辑盘中下一个可以分配给文件使用的空闲簇的簇号,这样操作系统可以不访问FAT表就直接获得磁盘剩余空间和可以分配的簇号。
分区引导扇区的第3个扇区则存储了引导扇区的后一部分引导系统的程序代码。
表1 FAT32文件系统磁盘读写参数表
编 号 起始偏移地址 占字节数 意 义
1 03H 8 操作系统的版本号。
2 0BH 2 每个扇区的字节数。
3 0DH 1 每簇扇区数。
4 0EH 2 为操作系统保留的扇区数。
5 10H 1 FAT表的个数。
6 11H 2 在FAT16中存放系统根目录中允许登记的目录项个数,FAT32中用于标注系统采用的是否为FAT32文件系统。其值为0000H表示磁盘使用FAT32文件系统。
7 13H 2 值为00H,为保持兼容性而保留,未使用。
8 15H 1 磁盘介质标志,硬盘为F8。
9 16 2 未使用,值为00H。
10 18H 2 每个磁道的扇区数。
11 1AH 2 磁盘的磁头个。
12 1CH 4 分区前隐藏扇区的个数。
13 20H 4 逻辑磁盘中的扇区总数。
14 24H 4 每个FAT表所占的扇区数。
15 28H 2 FAT表镜像标志,值为0表示系统保存2份互为备份的FAT表,值为1表示系统仅保存1份FAT表。
16 2AH 2 文件系统的主次版本(保留)。
17 2CH 4 磁盘根目录的起始簇号。
18 30H 2 文件系统参数的扇区号,通常位于引导扇区的下一个扇区。
19 32H 2 备份分区引导扇区的逻辑扇区号。
20 34H 12 保留,未使用。
21 40H 2 磁盘的物理驱动器号。
22 42H 1 磁盘读写参数扩展标志,其值为29H。
23 43H 4 磁盘卷的序列号。
24 47H 11 磁盘卷标号。
25 52H 8 文件系统的标识号(FAT32)。
FAT32文件系统磁盘I/O参数实例
图1列出了一个FAT32文件系统的磁盘读写参数实例,结合表1列出的I/O参数意义可以知道:该逻辑磁盘总共有2076417(1FAF01H)个扇区,为操作系统保留了51(33H)个扇区,每簇由8个扇区构成,每个磁道有63(003FH)个扇区,系统有两个互为镜像的FAT表,每个FAT表占用2028(07ECH)个扇区,FDT表的起始簇号为第2个簇(00000002H),备份的分区引导扇区存储在第6个逻辑扇区开始的存储空间,磁盘文件系统的标识号为FAT32。
三点声明:1、本人对fat一窍不通,但喜欢收藏。
2、只有fat32
3、我也不想贴子这样长,但你没有留邮箱。
FAT32文件系统磁盘I/O参数揭密
作者: 邓波
Windows 98操作系统引入了FAT32文件系统,它彻底解决了FAT16文件系统存在的诸多问题。所谓FAT32文件系统实际上就是用32位数据来描述磁盘簇的分配,而传统的磁盘管理是用16个二进制位(2个字节)来描述一个簇。从操作系统的结构上进行分析,可以知道FAT32文件系统并非仅仅简单地将FAT表转换成32位(即用4个字节来描述一个簇),而是带来了磁盘I/O参数、分区和FDT表及文件系统其它方面的变化。为了彻底了解FAT32文件系统对磁盘I/O参数的修改,本文对FAT32文件系统的结构进行了深入分析,揭示了FAT32文件系统存储和管理文件的算法。读懂FAT32文件系统的磁盘I/O参数,不但可以掌握直接访问磁盘文件的方法,而且可以在更高层次上发挥操作系统的功能。
FAT32文件系统对主引导扇区的改变
主引导扇区是硬盘独有的一个磁盘控制数据存储区域,其首要功能是存储有关硬盘分区的数据,它通常位于硬盘的0磁头0柱面1扇区。由于主引导扇区存放硬盘分区的有关数据,因此又称为分区扇区。分区数据对硬盘是至关重要的,分区数据的丢失或破坏将导致硬盘上的逻辑磁盘不能被系统识别,当然也就无法访问磁盘上存储的文件和数据。
根据对FAT32文件系统主引导扇区的分析可知,FAT32文件系统的主引导扇区在保持与FAT16文件系统主引导扇区兼容的基础上,针对FAT32文件系统的特点作了适当扩展。
FAT32文件系统主引导扇区对分区表数据结构的扩展仅限于增加了3个标识32位分区的类型标志,这3个增加的分区类型标志分别为0BH、0CH和0EH,用于描述FAT32文件系统的三种分区情况。对于扩展分区,则增加了一个类型标志0FH,表示Windows 98操作系统扩展分区。类型标志为0BH表示分区是FAT32分区,最大分区容量可以达到2047GB;为0CH表示的意义与0BH相同,但是对于INT 13H指令使用扩展的逻辑块地址(LBA)方式;为0EH表示的意义与06H相同,但是对于INT 13H指令使用扩展的逻辑块地址(LBA)方式;为0FH表示的意义与05H相同(扩展分区),但是同样对于INT 13H指令使用扩展的逻辑块地址方式。使用扩展的逻辑块地址方式是为了支持容量超过8GB的大容量硬盘。
由于文件系统转化为FAT32后,分区的类型标志变化为0BH、0CH和0EH,这些新的类型标志是原来FAT16文件系统所不能识别的,所以当用户使用MS-DOS操作系统的软盘启动系统后,机器不能识别硬盘的分区数据,当然也不能对硬盘的数据进行访问。
FAT32文件系统的分区引导扇区
在Windows 98操作系统中,当文件系统从FAT16转化为FAT32后,分区引导扇区的功能和作用并没有改变,但是考虑到FAT32文件系统的特性和为了解决FAT16文件系统存在的问题,操作系统对FAT32文件系统的分区引导扇区进行了扩展。
1.分区引导扇区所占的扇区数从1个扇区扩展为6个扇区
分区引导扇区的核心功能是通过磁盘读写参数加载启动操作系统的文件,为了使加载文件的操作更加灵活,加上FAT32文件系统采用"活动"的FDT表,需要对分区引导扇区的引导程序代码进行重新的设计,同时考虑到引导程序的代码量和为今后发展保留适当的余量,FAT32文件系统将分区引导扇区所占的扇区数从1个扇区扩展为6个扇区,Windows 98使用前3个扇区作为系统的分区引导扇区,其余3个扇区保留暂未使用。
2.采用双重分区引导扇区
根据对分区引导扇区功能和作用的研究,我们知道分区引导扇区对于操作系统的启动和磁盘文件的访问具有至关重要的作用。引导程序代码的损坏将导致操作系统不能正常启动,磁盘读写参数的破坏将造成存储在磁盘上的文件不能正常读写。
由于分区引导扇区的重要性,FAT32文件系统借鉴了操作系统处理FAT表的经验,在磁盘上保留了两份分区引导扇区,并且在启动时操作系统可以对两份引导扇区进行比较,以便选择正确的引导扇区来引导系统。由于在磁盘正常工作过程中系统不再对引导扇区的程序和数据进行修改,因此备份的分区引导扇区损坏的可能性非常小。
FAT32文件系统对磁盘I/O参数的扩展
FAT32文件系统的磁盘读写参数在部分保持与FAT16文件系统磁盘读写参数兼容的基础上,为了适应FAT32文件系统的需要,对磁盘读写参数作了适当扩展,所使用的字节数也从FAT16文件系统的58个字节扩展为87个字节,FAT32文件系统的磁盘读写参数占用扇区偏移地址03H至59H的空间,各参数的具体意义如表1所示。
另外,分区引导扇区的第2个扇区作为文件系统相关参数存储标识扇区,除了保存扇区的标识信息(RraA和rrAa)外,还在偏移地址1E8H处存储了文件系统有关的信息。其中扇区偏移地址1E8H~1EBH的4个字节存储了逻辑磁盘中未使用的簇数,通常用于快速计算逻辑磁盘的剩余空间(典型的操作是在资源管理器状态栏上列出的"可用磁盘空间"参数),而1ECH~1EFH 4个字节给出了逻辑盘中下一个可以分配给文件使用的空闲簇的簇号,这样操作系统可以不访问FAT表就直接获得磁盘剩余空间和可以分配的簇号。
分区引导扇区的第3个扇区则存储了引导扇区的后一部分引导系统的程序代码。
表1 FAT32文件系统磁盘读写参数表
编 号 起始偏移地址 占字节数 意 义
1 03H 8 操作系统的版本号。
2 0BH 2 每个扇区的字节数。
3 0DH 1 每簇扇区数。
4 0EH 2 为操作系统保留的扇区数。
5 10H 1 FAT表的个数。
6 11H 2 在FAT16中存放系统根目录中允许登记的目录项个数,FAT32中用于标注系统采用的是否为FAT32文件系统。其值为0000H表示磁盘使用FAT32文件系统。
7 13H 2 值为00H,为保持兼容性而保留,未使用。
8 15H 1 磁盘介质标志,硬盘为F8。
9 16 2 未使用,值为00H。
10 18H 2 每个磁道的扇区数。
11 1AH 2 磁盘的磁头个。
12 1CH 4 分区前隐藏扇区的个数。
13 20H 4 逻辑磁盘中的扇区总数。
14 24H 4 每个FAT表所占的扇区数。
15 28H 2 FAT表镜像标志,值为0表示系统保存2份互为备份的FAT表,值为1表示系统仅保存1份FAT表。
16 2AH 2 文件系统的主次版本(保留)。
17 2CH 4 磁盘根目录的起始簇号。
18 30H 2 文件系统参数的扇区号,通常位于引导扇区的下一个扇区。
19 32H 2 备份分区引导扇区的逻辑扇区号。
20 34H 12 保留,未使用。
21 40H 2 磁盘的物理驱动器号。
22 42H 1 磁盘读写参数扩展标志,其值为29H。
23 43H 4 磁盘卷的序列号。
24 47H 11 磁盘卷标号。
25 52H 8 文件系统的标识号(FAT32)。
FAT32文件系统磁盘I/O参数实例
图1列出了一个FAT32文件系统的磁盘读写参数实例,结合表1列出的I/O参数意义可以知道:该逻辑磁盘总共有2076417(1FAF01H)个扇区,为操作系统保留了51(33H)个扇区,每簇由8个扇区构成,每个磁道有63(003FH)个扇区,系统有两个互为镜像的FAT表,每个FAT表占用2028(07ECH)个扇区,FDT表的起始簇号为第2个簇(00000002H),备份的分区引导扇区存储在第6个逻辑扇区开始的存储空间,磁盘文件系统的标识号为FAT32。