文件分配表FAT详细解释.doc

上传人:j****9 文档编号:3278152 上传时间:2019-05-28 格式:DOC 页数:7 大小:64KB
下载 相关 举报
文件分配表FAT详细解释.doc_第1页
第1页 / 共7页
文件分配表FAT详细解释.doc_第2页
第2页 / 共7页
文件分配表FAT详细解释.doc_第3页
第3页 / 共7页
文件分配表FAT详细解释.doc_第4页
第4页 / 共7页
文件分配表FAT详细解释.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、文件分配表 FAT(File Allocation Table) 文件分配表是用来表示磁盘文件的空间分配信息的,它不对引导区、文件目录表的信息进行表示,也不真正存储文件内容. 文件占用磁盘空间时,基本单位不是字节而是簇。簇的大小与磁盘的规格有关,一般情况下,软盘每簇是 1 个扇区,硬盘每簇的扇区数与硬盘的总容量大小有关,为 2 的 n 次方,可能是4、8、16、32、64 由于 FAT 对于文件管理的重要性,所以 FAT 有一个备份,即在原 FAT的后面再建一个同样的 FAT。初形成的 FAT 中所有项都标明为 “未占用 “,但如果磁盘有局部损坏,那幺格式化程序会检测出损坏的簇,在相应的项中标

2、为 “坏簇 “,以后存文件时就不会再使用这个簇了。FAT 的项数与硬盘上的总簇数相当,每一项占用的字节数也要与总簇数相适应,因为其中需要存放簇号。FAT 的格式有多种,最为常见和为读者所熟悉的是 FAT16 和 FAT32,其中 FAT16 是指文件分配表使用 16 位数字,由于 16 位分配表最多能管理 65536(即 2 的 16次方)个簇,也就是所规定的一个硬盘分区。 由于每个簇的存储空间最大只有 32KB,所以在使用 FAT16 管理硬盘时,每个分区的最大存储容量只有(6553632 KB)即 2048MB,也就是我们常说的 2G。现在的硬盘容量是越来越大,由于 FAT16对硬盘分区的

3、容量限制,所以当硬盘容量超过 2G 之后,用户只能将硬盘划分成多个 2G 的分区后才能正常使用,为此微软公司从Windows 95 OSR2 版本开始使用 FAT32 标准,即使用 32 位的文件分配表来管理硬盘文件,这样系统就能为文件分配多达4294967296(即 2 的 32 次方)个簇,所以在簇同样为 32KB 时每个分区容量最大可达 65G 以上。此外使用 FAT32 管理硬盘时,每个逻辑盘中的簇长度也比使用 FAT16 标准管理的同等容量逻辑盘小很多。由于文件存储在硬盘上占用的磁盘空间以簇为最小单位,所以某一文件即使只有几十个字节也必须占用整个簇,因此逻辑盘的簇单位容量越小越能合理

4、利用存储空间。所以 FAT32 更适于大硬盘。 文件占用磁盘空间时,基本单位不是字节而是簇。簇的大小与磁盘的规格有关,一般情况下,软盘每簇是 1 个扇区. 硬盘每簇的扇区数与硬盘的总容量大小有关,其值见下表: 分区大小: FAT16 (扇区数/簇) FAT32 ( 扇区数/ 簇)对于簇大小为 16KB 则 1024*16=16384 字节/簇=16384/512=32 扇区/簇16MB-127MB 4 1 128MB-255MB 8 1 256MB-259MB 16 1 260MB-511MB 16 8 512MB-1023MB 32 8 1024MB-2047MB 64 8 2048MB-8

5、GB 不支持 8 8GB-16GB 不支持 16 16GB-32GB 不支持 32 32GB 以上 不支持 64 FAT16 及 FAT32 相關特定值意義如下: FAT16 1.DBR(DOS 引导记录) 第 0 扇区开始,使用一个扇区,没有保留扇区. 2.FAT 表长 在 DBR 第 16H 处的 2 字节(表示占用扇区数),FAT1 從第 1 扇區開始 3.FAT 簇 每簇用 16 位二进制数表示 FAT 表中每簇地址占 2Bytes 4.可用簇号 0002H - FFEFH ( = FFEDH65518个簇) 5.特定簇号 0000H、0001H 两簇号不使用,其对应 DWORD 位置

6、:F8 FF FF 7F 簇值意义 不要把 FAT 表项内的数字误认为表示当前簇号,而应是该文件的下一个簇的簇号 高字节在后低字节在前是存储方式,读出时应进行调整,如两字节 12H 34H,实际应为 3412H 值 FFF0H 用来表示坏簇 值 FFFFH 表示文件结束簇 特定值表示坏簇,其它值表示为文件占用的下一簇的簇号 6.根目录区扇区大小,在 DBR 第 11H 的两字节( 表示 32 字节的根目录个数)如值为 00 02,则 0200H=512 个,即 512*32 字节=16384 字节,等于 32 个扇区 7.扇区数量 在 DBR 第 13H 处 2 字节 文件分配表结构如 1(H

7、 表示 16 进制)第 0 字节:1 1 0 0 1 0 0 0第 2 字节 FFH 第 1 字节 FFH1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1第 4 字节 12H 第 3 字节 34H0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0第 5 字节 26H 第 4 字节 3CH0 0 0 1 0 1 1 0 0 0 1 1 1 1 0 0 F8H FFH1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0表项 1表项 2表项 3表项 3412共有 65536 个表项即 2 的 16 次

8、方 65536 个簇,若分区大小是 1GB=1048576KB,则簇大小是1048576KB65536 个簇=16 KB/簇第 0 字节:表头,表示磁盘类型。FFH 双面软盘,每磁道 8 扇区FEH 单面软盘,每磁道 8 扇区,FDH 双面软盘,每磁道 9 扇区,FCCH 单面软盘,每磁道 9 扇区,FC8H 硬盘第 12 字节:(表项号 1)表示第一簇状态,因第一簇被系统占据,故此两字节为 FFFFH第 34 字节:(表项号 2)表示第二簇状态,若为 FFFH 表此簇为坏的,DOS 已标记为不能用;0000H 表示此簇为空,可以用;FFF8H 表示该簇为文件的最后一簇;其余数字表示文件的下一

9、个簇号,注意高字节在后,低字节在前。第 56 字节:(表项号 3)表示第三簇状态,同上。-FAT32 1.DBR 从第 0 扇区开始,使用三个扇区,保存了该逻辑盘每扇区字节数,每簇对应的扇区数等重要参数和引导记录.(佔用 32 扇區) 2.FAT 表长 在 DBR 第 24H 处的 4 字节(表示 FAT 占用扇区数 ),FAT1 從第 32 扇區開始. 3.FAT 簇 FAT 表中每簇地址占 4Bytes 4.可用簇号 00000002H - FFFFFEFFH 5.特定簇号 0000000H、00000001H 两簇号不使用,其对应的两个 DWORD 位置(FAT 表开头的 8 个字节)用

10、来存放该盘介质类型编号 :F8 FF FF 0F FF FF FF 0F 值 00000000H 表示该簇未被分配值 FFFFFF0FH 表示是该簇是文件占用的最后一族 特定值表示坏簇,其它值表示为文件占用的下一簇的簇号 6.根目录区扇区大小, 不再是固定区域和固定大小 7.扇区数量 在 DBR 第 20H 处的 4 字节 其它: 1. FAT 表按顺序依次记录了该盘各簇的使用情况,是一种位示图法. 2. 每簇所占用扇区数见上. 3. 微软建议对小于 512M 的逻辑盘不使用 FAT32 4. 对于使用 FAT16 文件系统的硬盘分区时,不要将分区(逻辑盘) 容量正好设为某一区间的下限. 计算

11、公式: 每个扇区长度 = 512 字节 总簇数 = 逻辑盘容量/簇容量 总簇数 = FAT 表长度(字节)/每个表项长度(字节)- 2 FAT 表长度=逻辑盘容量 /簇容量*每个表项长度 每个有效的 FAT 结构区包含两个完全相同的拷贝:FAT1、FAT2 如: 2G FAT 16 分区格式的 HD, FAT 长度为 250Sectors, 则总簇数= 250 * 512 / 2 - 2 = 63998 簇容量(每簇扇区数) = 2 097 000 000 / 63998 = 32776Bytes = 64 Sectors 文件目录表 FDT(File Directory Table),即根目

12、录(DIR) 区,又称为 ROOT 区 紧跟在 FAT2 的下一个扇区开始,记录着根目录下每个文件(目录) 的起始单元,文件的属性等。定位文件位置时,操作系统根据 DIR 中的起始单元,结合 FAT 表就可以知道文件在硬盘中的具体位置和大小了。 如果支持长文件名,则每个表项为 64 个字节,其中,前 32 个字节为长文件链接说明;后 32 个字节为文件属性说明,包括文件长度、起始地址、日期、时间等。如不支持长文件名,则每个表项为 32 个字节的属性说明。 根目录下可包含文件和子目录,子目录下又可包含文件和下级子目录.一个子目录也占用一个文件目录项,只不过它的属性字节为 10H,文件长度字节为

13、0.一个子目录中的内容是若干个文件目录项或下级子目录项. Start Pos. Bytes FAT16 FAT32 00-07 8 文件名 文件名 08-0A 3 文件扩展名 文件扩展名 0B 1 FAT16:/表示属性: 00000000 读写 00000001 只写 00000010 隐含 00000111 系统,隐含,只读 00000100 系统 00001000 卷标 00010000 子目录 00100000 档案,只要完成写操作并已关闭即置 1 FAT32:/0 至 5 位分别是只读位、隐藏位、系统位、卷标位、子目录位、归档位 最高两位保留未用 0C-0D 2 保留未用 存储短文件

14、名字节校验和 0E-0F 2 保留未用 文件创建时间 10-11 2 保留未用 文件创建日期 12-13 2 保留未用 最新访问日期 14-15 2 保留未用 文件存放的起始簇号的高 16 位 16-17 2 文件创建时间(hhhhhmmmmmmsssss) 文件最新修改时间 18-19 2 文件创建日期(yyyyyyymmmmddddd) 文件最新修改日期 1A-1B 2 文件存放的起始簇号 (低字节在前) 文件存放的起始簇号的低 16 位 1C-1F 4 文件长度 文件长度 注:目录项中第 07 字节为文件名 (若有剩余字节则用空白字符 20H 填充). 其中,第 1 字节又表明了该文件的

15、状态,它有如下四种取值方式: a. 00H-目录项的空目录。 b. E5H-表示该目录项曾经使用过,但文件已被删除。 c. 2EH-表示子目录下的两个特殊文件 “. “或 “. “目录项 d. 其它任何字符-表示一个文件名( 或目录名)的第一个字符的 ASCII 码值. 数据(DATA)区 数据区是真正意义上的数据存储的地方,位于 DIR 区之后,占据硬盘上的大部分数据空间。 文件数据起始地址(扇区号) = 保留扇区数(DBR) + 每 FAT 扇区数 * 2 + 根目录项数/32 (FDT 扇区数) + 每簇扇区数 * (起始簇号 - 2) 当一个程序对操作系统要求提供某一个文件的内容时,操

16、作系统会到此文件的目录记录表去寻找它的第一个簇号码, 然后再到 FAT 记录表里去找在此一链结(Chain) 里的下一个簇。 此动作不断的重复直到找到文件的最后一个簇为止,操作系统可以精确的计算那些簇属于这个文件及其先后顺序。经由此方式,操作系统可以提供程序所要求之文件的任何部分。这种组织文件的方式称 为 FAT 链(FAT Chain). 在 FAT 文件系统下,文件永远被分配到整数单位的簇。 在一个每一簇大小为 32K 的1.2GB 磁盘中,一个只包含 “Hello,World! “这几个字符的大小为 12 个 字节文件仍要在磁盘中占 32K 的空间。在簇中没有用到的部分称为耗损 (Sla

17、ck),小文件的耗损几乎与整个簇相当,平均来说,一个文件会有一半左右的耗损。 文件的读取: 操作系统从目录区中读取文件信息 (包括文件名、后缀名、文件大小、修改日期和文件在数据区保存的第一个簇的簇号),我们这里假设第一个簇号是 0023。操作系统从 0023 簇读取相应的数据,然后再找到 FAT 的 0023 单元,如果内容是文件结束标志(FF),则表示文件结束,否则内容保存数据的下一个簇的簇号,这样重复下去直到遇到文件结束标志。 文件的写入:当我们要保存文件时,操作系统首先在 DIR 区中找到空区写入文件名、大小和创建时间等相应信息,然后在 Data 区找到闲置空间将文件保存,并将 Data 区的第一个簇写入 DIR 区,其余的动作和上边的读取动作差不多。 DOS 删除文件时只是把文件目录表中的该文件的表项第 0 个字节改为 E5h,表此表项已被删除,并在文件分配表中把该文件占用各簇的表项清 0,以释放空间。其实文件的内容仍在盘上,并没有被真正删除,这就是 undelete.exe、unerase.exe 等一类恢复删除工具能起作用的原因

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 重点行业资料库 > 医药卫生

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。