FAT32文件系统结构研究.docx

上传人:b****8 文档编号:10152200 上传时间:2023-02-08 格式:DOCX 页数:11 大小:24.56KB
下载 相关 举报
FAT32文件系统结构研究.docx_第1页
第1页 / 共11页
FAT32文件系统结构研究.docx_第2页
第2页 / 共11页
FAT32文件系统结构研究.docx_第3页
第3页 / 共11页
FAT32文件系统结构研究.docx_第4页
第4页 / 共11页
FAT32文件系统结构研究.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

FAT32文件系统结构研究.docx

《FAT32文件系统结构研究.docx》由会员分享,可在线阅读,更多相关《FAT32文件系统结构研究.docx(11页珍藏版)》请在冰豆网上搜索。

FAT32文件系统结构研究.docx

FAT32文件系统结构研究

                                                                    FAT32文件系统结构研究

摘要:

Windows98操作系统引入了FAT32文件系统,它解决了FAT16文件系统存在的诸多问题.但有关FAT32文件系统技术实质的文章尚不多见.本文对FAT32文件系统的结构和技术实质进行了详细分析,揭示了FAT32文件系统存储和管理文件的算法.掌握FAT32文件系统的内部结构,可以使读者在更高层次上发挥操作系统的功能.

关键词:

文件分配表;文件目录表;文件系统;操作系统

 

1.引言

   FAT32是个非常有功劳的文件系统,Microsoft成功地设计并运用了它,直到今天NTFS铺天盖地袭来的时候,FAT32依然占据着MicrosoftWindows文件系统中重要的地位。

FAT32最早是出于FAT16不支持大分区、单位簇容量大以致空间急剧浪费等缺点设计的。

文件系统总体上与FAT16文件系统变化不大,现将有关变化部分简介如下:

  

    

(1)FAT32文件系统将逻辑盘的空间划分为三部分,依次是引导区(BOOT区)、文件分配表区(FAT区)、数据区(DATA区)。

引导区和文件分配表区又合称为系统区。

    

(2)引导区从第一扇区开始,使用了三个扇区,保存了该逻辑盘每扇区字节数,每簇对应的扇区数等等重要参数和引导记录。

之后还留有若干保留扇区。

而FAT16文件系统的引导区只占用一个扇区,没有保留扇区。

    (3)文件分配表区共保存了两个相同的文件分配表,因为文件所占用的存储空间(簇链)及空闲空间的管理都是通过FAT实现的,FAT如此重要,保存两个以便第一个损坏时,还有第二个可用.为了彻底了解FAT32文件系统对操作系统的哪些方面进行了改变,本文对FAT32文件系统的完整结构进行了深入分析,其中包括对构成FAT32文件系统的主引导扇区(分区扇区)、分区引导扇区、FAT和FDT表4个结构的分析.FAT32文件系统带来了很多好处,随着大容量硬盘的日益普及,使用FAT32文件系统将是大势所趋.

2.对FAT32文件系统主引导扇区的分析

    主引导扇区是硬盘独有的一个磁盘控制数据存储区域,是硬盘独有的一个磁盘控制数据存储区域,其首要功能是存储有关硬盘分区的数据,它通常位于硬盘的0磁头0柱面1扇区。

由于主引导扇区存放硬盘分区的有关数据,因此又称为分区扇区。

分区数据对硬盘是至关重要的,分区数据的丢失或破坏将导致硬盘上的逻辑磁盘不能被系统识别,当然也就无法访问磁盘上存储的文件和数据。

2.1主引导扇区的传统功能与作用

     通过对硬盘主引导扇区程序的分析,其中存储的数据主要由以下3个部分构成:

    1)引导系统启动的程序代码

    2)硬盘的分区数据

    3)主引导扇区的有效标志

    主引导扇区的首要功能是存储有关硬盘分区的数据,保存了该逻辑盘每扇区字节数,每簇对应的扇区数等等重要参数和引导记录,这些分区数据对硬盘是至关重要的.分区数据的丢失或破坏将导致硬盘上的逻辑磁盘不能被系统识别,当然也就无法访问磁盘上存储的文件和数据.

2.2FAT32文件系统对主引导扇区的改变

    根据对FAT32文件系统主引导扇区的分析可知,FAT32文件系统的主引导扇区在保持与FAT16文件系统主引导扇区兼容的基础上,针对FAT32文件系统的特点作了适当扩展。

FAT32文件系统主引导扇区对分区表数据结构的扩展仅限于增加了3个标识32位分区的类型标志,这3个增加的分区类型标志分别为0BH、0CH和0EH,用于描述FAT32文件系统的三种分区情况。

对于扩展分区,则增加了一个类型标志0FH,表示Windows98操作系统扩展分区。

类型标志为0BH表示分区是FAT32分区,最大分区容量可以达到2047GB;为0CH表示的意义与0BH相同,但是对于INT13H指令使用扩展的逻辑块地址(LBA)方式;为0EH表

示的意义与06H相同,但是对于INT13H指令使用扩展的逻辑块地址(LBA)方式;为0FH表示的意义与05H相同(扩展分区),但是同样对于INT13H指令使用扩展的逻辑块地址方式。

使用扩展的逻辑块地址方式是为了支持容量超过8GB的大容量硬盘。

由于文件系统转化为FAT32后,分区的类型标志变化为0BH、0CH和0EH,这些新的类型标志是原来FAT16文件系统所不能识别的,所以当用户使用MS-DOS操作系统的软盘启动系统后,机器不能识别硬盘的分区数据,当然也不能对硬盘的数据进行访问。

3.对FAT32文件系统分区引导扇区的分析

    硬盘的主引导扇区,分区表,分区引导扇区(MBR、DPT、DBR、BPB)是电脑BIOS自检完成后,操作系统开始引导系统前整个电脑运作过程中需要检查的重要参数,硬盘的主引导扇区,分区表,分区引导扇区(MBR、DPT、DBR、BPB)参数错误可能导致系统无法启动或存储的数据丢失,硬盘的0柱面、0磁头、1扇区称为主引导扇区(也叫主引导记录MBR),该记录占用512个字节,它用于硬盘启动时将系统控制权转给用户指定的、在分区表中登记了某个操作系统分区。

MBR的内容是在硬盘分区时由分区软件(如FDISK)写入该扇区的,MBR不属于任何一个操作系统,不随操作系统的不同而不同,即使不同,MBR也不会夹带操作系统的性质,具有公共引导的特性。

但安装某些多重引导功能的软件或LINUX的LILO时有可能改写它;它先于所有的操作系统被调入内存并发挥作用,然后才将控制权交给活动主分区内的操作系统.

3.1FAT16文件系统的分区引导扇区

    FAT16文件系统分区引导扇区是由引导系统启动的程序代码、逻辑磁盘参数和分区引导扇区有效标志3个部分构成.在分区引导扇区中最重要的部分是逻辑磁盘读写(称为I/O)参数,引导系统启动的程序代码将使用这些参数来访问存储在磁盘上各文件的数据.I/O参数从扇区偏移地址O3H开始存放,共有18个数据项,占用58个字节(从扇区偏移地址03H到3DH).

3.2FAT32文件系统的分区引导扇区   

    在Windows操作系统中,当文件系统从FAT16转化为FAT32后,分区引导扇区的功能和作用并没有改变,但是考虑到FAT32文件系统的特性和为了解决FAT16文件系统存在的问题,操作系统对FAT32文件系统的分区引导扇区进行了扩展.

3.2.1分区引导扇区所占的扇区数从1个扇区扩展为6个扇区

    分区扇区的核心功能是通过磁盘读写参数加载启动操作系统的文件,为了使加载文件的操作更加灵活,加上FAT32文件系统采用“活动”的FDT表,需要对分区引导扇区的引导程序代码进行重新的设计.同时考虑到引导程序的代码量和为今后发展保留适量的余量,FAT32文件系统将分区引导扇区所占的扇区数从1个扇区扩展为6个扇区.当前版本的Windows98使用了前3个扇区作为系统的分区引导扇区,其余3个扇区保留暂未使用.

3.2.2采用双重分区引导扇区

    根据对分区引导扇区功能和作用的研究,我们知道分区引导扇区对于操作系统的启动和磁盘文件的访问具有至关重要的作用.引导程序代码的损坏将导致操作系统不能正常启动,磁盘读写参数的破坏将造成存储在磁盘上的文件不能正常读写.由于分区引导扇区的重要性,FAT32文件系统借鉴系统处理FAT表的经验,在磁盘保留了两份分区引导扇区,并且在启动时操作系统可以对两份引导扇区进行比较,以便选择正确的引导扇区来引导系统.由于在磁盘正常工作过程中系统不再对引导扇区的程序和数据进行修改,因此备份的分区引导扇区损坏的可能性非常小.

3.2.3根据FAT32文件系统的特点对磁盘读写参数作了进一步的扩展

    FAT32文件系统的磁盘读写参数在部分保持与FAT16文件系统磁盘读写参数兼容的基础上,为了适应FAT32文件系统的需要,对磁盘读写参数作了适当的扩展,所使用的字节数也从FAT16文件系统的58个字节扩展为87个字节.FAT32文件系统的磁盘读写参数占用扇区偏移地址03H至59H的存储空间,各参数的含义如表1所示:

表1FAT32文件系统磁盘读写参数

编号起始偏移地址占字节数意义

103H8操作系统的版本号

20BH2每个扇区的字节数

30DH1每簇扇区数

40EH2为操作系统保留的扇区数

510H1FAT表的个数

611H2是否为FAT32

713H2未使用

815H1磁盘介质标志

916H2未使用

1018H2每个磁道的扇区数

111AH2磁盘的磁头个数

121CH4分区隐藏扇区个数

1320H4逻辑磁盘扇区总数

1424H4每个FAT表所占的扇区数

1528H2FAT表镜像标志

162AH2文件系统主次版本

172CH4磁盘根目录的起始簇号

1830H2文件系统参数的扇区号

1932H2备份分区引导扇区的逻辑扇区号

2034H12保留,

2140H2磁盘物理驱动器号

2242H1磁盘读写参数扩展标志

2343H4磁盘卷的序列号

2447H11磁盘卷标号

2552H8文件系统的标识号

4.对FAT32文件系统分区引导扇区的分析

    FAT表是一张磁盘空间分配情况登记表,它以簇号的方式记录了簇的分配情况.在FAT16文件系统中,通常用2个字节来标记簇号分配的链表.对于FAT32文件系统来讲,其核心的改变就是使用4个字节来标记簇号分配的链表.FAT32文件系统的命名就源自系统采用32位的FAT表结构,但是FAT表的变化反而不如其它磁盘控制区域数据的变化大.除了采用32位4个字节作为一个簇的记录项和标记项等参数略有改变外,FAT表中没有任何其它变化.根据FAT32文件系统的特点,32位的FAT表中以下数据发生了变化.

4.1保留簇的改变

    在FAT16文件系统中,FAT表中前4个字节为保留值,其中第1个字节作为磁盘的标志.采用4个字节作为保留值的理论依据来源于系统将编号为0和1的两个簇作为保留,文件数据区从第2个簇开始,故根据簇号链的计算公式:

    (簇号入口地址=簇号×2),FAT表的前4个字节就设计为保留值.

    使用与FAT16文件系统相同的原理,32位FAT表也将0簇和1簇作为保留簇,故FAT表的前8个字节为保留值,其中第1个字节仍然作为磁盘标记.同时,为了满足特殊文件系统的要求,FAT32文件系统将第2个簇也同时作为保留簇,用于记录FDT表的空间分配簇链登记项.

4.2登记项的改变

    32位的FAT表用“00000000”项表示对应的簇号未分配;用“0FFFFFF8H”至“0FFFFFFFH”表示对应的簇是文件分配的最后一簇;而“0FFFFFF7H”则表示已损坏不能分配的簇.由于FAT表中登记项的32位值中高4位为保留(总是0),故理论上FAT32文件系统可以表示的最大簇号为268435450(228),即用于实际描述簇号的位数为28位,用前述公式读者不难计算出FAT32文件系统可以表示的最大磁盘空间.

5.对FAT32文件系统FDT表的深入分析

    FDT表的作用是记录文件的主名、扩展名、日期、属性、起始簇号和长度等信息,从记录的内容来看,除了文件的起始簇号外,其它参数没有任何变化.另外,从文件系统的结构来看.FDT表本身将从磁盘控制区域内的固定位置变化为磁盘数据区中的浮动空间位置,以解决磁盘根目录文件数量受到FDT表空间限制的问题.因此,下面我们重点对浮动的FDT表和目录登记项中的起始簇号参数进行讨论.

    在FAT16文件系统中,记录根目录文件参数的FDT表位于磁盘上FAT表和文件数据存储区之间的固定位置中,通常为32个或38个扇区,可以记录512个或608个文件的数据.由于存放根目录文件FDT表的空间是固定的,因此根目录上存储的文件或文件夹的数量是有限的.对于各子目录下的FDT表,操作系统采用文件管理的方式管理FDT表,即使用FAT表来管理各子目录下FDT表所需要的存储空间,当子目录下的文件数量超出当前FDT表允许的登记项的数量时,操作系统为FDT表再分配一个簇,用于存储目录项参数,并同时在系统FAT表中登记上FDT表的分配簇链.所以,从理论上讲,子目录下存放的文件除了受到磁盘空间的限制外,不受其它任何条件的限制.FAT32文件系统为了解决根目录FDT表空间受到限制的问题,借鉴了子目录下FDT表的经验,将根目录FDT表也以文件的形式来管理,从而形成浮动的根目录FDT表.浮动FDT表的结构实际上是固定部分和动态部分的有机结合,其中固定部分通常为1个簇.在FAT32文件系统中,1个簇通常由8个扇区4KB的存储空间构成,所以固定部分可以记录的最大目录项数为128个.当然由于受长文件名附加目录项的影响实际允许记录的文件目录项将大大低于理论上的128个,但这部分固定的FAT表空间确实可以满足基本的系统需要.根目录FDT表的固定部分同FAT16文件系统一样,仍然位于最后一个FAT表的后面与数据存储空间之间的磁盘存储区域中.

     在磁盘格式化时格式化程序将自动创建固定部分的FDT表,如果系统是从FAT16文件系统转换为FAT32文件系统,由于原来的FDT表已经位于该位置,所以FDT表的固定部分也将优先建立在紧接FAT表的位置.浮动FDT表主要体现在其动态部分,即当根目录上存储的文件超过固定部分所能记录的数量后,操作系统将为根目录的FDT表增加1个簇或多个簇的存储空间,这部分新增加的存储空间不在原来固定部分的后面(那一部分存储空间早已分配给其它文件了),而是磁盘数据存储区域中的任意一个未使用的存储空间.同时系统在FAT表的第3项(扇区偏移地址08H)处记录了动态部分第一个簇的簇号,动态部分其它簇的簇号则由操作系统根据FAT表的簇链登记准则进行相应的登记.由于动态部分实际上已经是一个可以按FAT簇链进行访问的文件,因此从理论上分析,根目录FDT表中允许登记的项数也就除了受磁盘空间限制外,没有其它的任何限制了.但是,为了避免由于根目录中登记项太多造成系统文件访问性能的下降(文件管理系统必须通过FAT表查找整个FDT表的存储间),Windows操作系统规定根目录中的文件登记项数不能超过65535个,也就是根目录FDT表的存储空间不超过4096个扇区.另外,值得特别关注的是,在分区引导扇区的磁盘读写参

数表中也同时存储了FDT表在FAT表中起始簇号的位置(参见表1中的第17项),因此操作系统完全可以改变FDT表的位置,不使用FDT表的固定部分.

5.232位的文件存储空间起始簇号

    FDT表中另一个重要的参数是文件的起始簇号.在操作系统访问文件的数据时,将通过FDT表中存储的文件起始簇号计算出文件后续存储空间在FAT表中的偏移地址,并通过FAT表按顺序计算出存储文件数据的所有簇,然后才能对文件的数据进行读写操作.Windows操作系统中实际采用的是一套折衷解决办法,即在FDT表的32字节目录项中寻找未使用的空间作为4个字节起始簇号的高16位,而将原有的2个字节起始簇号作为新的起始簇号的低16位,两者组合构成32位的起始簇号.这种在现有存储空间中寻找补充字节,该方案的优点在于完全保持了与原有文件系统的兼容性,操作系统内核和文件系统不必做大的改变,也不必增加系统的资源开销.其缺点是文件的起始簇号没有在连续的字节空间中存放,而是分隔在两处,使用户不易理解,同时也不可能解决FDT表固有的问题和不能给FDT表融入新的特性.从Windows操作系统FDT表的结构来看,每个32字节的目录项中只有1处还有两个连续的字节空间尚未使用,这两个字节就是目录项中的第21和第22字节,即位于记录文件修改日期和时间前面的2个字节.FAT32文件系统就使用了这两个字节作为文件起始簇号的高16位,它们与原有的起始簇号(位于第27和第28字节)一起组合成32字节的文件起始簇号.

6.FAT32文件系统特性分析

1 FAT16和FAT32

   FAT32与FAT16相比,FAT32能以更小的簇分配磁盘空间,这样就能更有效地利用磁盘空间,磁盘扇区是操作系统格式化磁盘的最小单位,一般扇区大小为512字节,几个扇区组成簇,下面是FAT16和FAT32的对照表。

FAT32FAT16

分区大小簇大小分区大小簇大小

〈260MB512B〈127MB2KB

260MB-8GB4KB128MB-255MB4KB

8GB-16G8KB256MB-511MB8KB

16G-32G16KB512MB-1023MB16KB

732GB32KB1G-2G32KB

  由上表看出,FAT16的弊端主要有二个:

一个是管理分区只能在2GB以下,二是硬盘分区太大时所分配簇的大小不尽科学,即分区越大,损失也就越大。

在大容量硬盘日渐普及的情况下,FAT16已不能适应要求。

FAT32的出现是众望所归,其根本目的就是为了更有效地管理和利用硬盘驱动器上的空间。

2 FAT32的兼容性

2.1磁盘管理工具

   FAT32与基于FAT16的程序和磁盘完全兼容。

但是,许多现有的磁盘实用程序或修复工具,不能用于FAT32的硬盘。

Windows95OSR2中的磁盘工具,包括磁盘扫描程序、备份程序和磁盘碎片整理程序,则完全支持FAT32的硬盘,但不能用DRIVESPACE压缩FAT32硬盘。

2.2启动系统

   除了Windows95OSR2以外,其他操作系统无法读写FAT32硬盘上的信息。

包括使用FAT16的MS—DOS,WINDOWS3.X和WINDOWS95等。

因此安装了FAT32的用户必须制成相应格式的系统启动盘,不能用DOS6.x的系统软盘启动机器进入硬盘,而只能使用FAT32格式化的系统盘进行启动。

由于这个原因,使用了FAT32的硬盘不能实现WIN2DOWS95OSR2和DOS6.22的双启动。

而使用FAT16的硬盘则可以。

2.3FAT32的访问

   在WINDOWS95OSR2的模式下,可以对FAT32硬盘进行读写。

另外,通过网络可以共享FAT32硬盘,即使远程计算机不支持FAT32它也能够象读写老式FAT驱动器一样读写FAT32硬盘。

3 FAT16升级FAT32

3.1手工升级方法

   如果你使用的是品牌机器,安装的是WIN-DOWS95OSR2很可能它使用了FAT32文件系统。

可用如下方法判断:

在“我的电脑”中,用右键单击表示硬盘的图标,然后单击“属性”。

在属性窗口的常规选项卡上,将显示当前正被使用的硬盘文件系统类型。

由于WINDOWS95OSR2没有提供FAT16向FAT32升级的工具,要在你的旧硬盘中安装FAT32文件系统,可按如下方法手工进行。

3.2利用WIN98提供的FAT32转换器

   在WIN98中提供一个FAT32转换器,现在你可以在不破坏硬盘原有数据的基础上,把现有的FAT16转换成FAT32了。

具体操作如下:

   在“开始”菜单中选择“程序/附件/系统工具/FAT32转换器”即可。

但是该程序也会同样警告你:

使用该工具进行转换后,将无法使用以前的操作系统对该硬盘分区进行访问。

因此,要使用DOS进行访问就不可能了。

3.3工具转换法

  通过使用其它一些工具软件的FAT32转换实用程序可将FAT16转换为FAT32,该方法的优点是不用事先备份硬盘上的数据,缺点是不能改变原硬盘分

区的大小。

常用的分区格式转换软件有以下几种:

  1)Transx952.04它是一个硬盘复制软件,可以把WIN95从一个硬盘快速拷贝到另一磁盘,除此之外,它具有将FAT16安装转换为FAT32的功能。

  2)PartitionMagic3.03这是硬盘无损分区软件,它也具有将FAT16安全转换为FAT32的功能。

  3)CVT.EXE这是一个运行于DOS环境的分区格式转换软件。

7.总结

     根据本文对FAT32文件系统内部结构的分析可以知道,FAT32文件系统对传统的FAT16文件系统进行了较为彻底地改造,除了通过减少每簇的容量降低了大容量磁盘存储空间的浪费外,同时也自动解决了FAT16文件系统对根目录512个文件记录项的限制,其优点是非常明显的.另外,由于系统可以使用的簇号资源增加,也自然解决了操作系统对大容量硬盘的支问题.虽然FAT32文件系统不支持传统的MSDOS操作系统,但在Windows操作系统占绝对优势的今天,这个小小缺陷不可能阻碍FAT32文件系统的普及.可以预计,随着大容量硬盘的不断降价,FAT32文件系统必将成为主流的文件系统.因此,本文所分析的FAT32文件系统的内部结构,不但可以使用户理解FAT32文件系统的实现机理,而且对高层次的用户开发直接访问FAT32文件系统数据的软件也具有非常重要的意义.

 

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

当前位置:首页 > 法律文书 > 辩护词

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1