http://hi.baidu.com/dancwolf/blog/item/96e6995181a23c868c5430c6.html
转帖
http://www.channel7.cn/2004/12-21/12265.html FAT文件系统原理(二)
转帖
###################################
磁盘格式为:FAT12
磁盘容量为:168000H(1474560 => 1.40625MB)
每512字节称为1个扇区
###################################
0000H-01FFH 为FAT引导信息 以55 AA标志结束 长度为200H(512)字节
[第0扇区]
0200H-13FFH 为文件分配表FAT1 起始标志为:F0 FF FF
长度为1200H(4608)字节 [第1-9扇区]
用12个二进制位(1.5字节)表示一个簇的状态,最多可管理3072个簇,实际管理2847个簇,有334.5个字节空余。
FAT每个单元的值以及含义:
000H 空簇
002H----FEFH 该簇已被使用,其值为下一个簇的簇号
FF7H 坏簇
FF8H----FFFH 该簇已被使用,并且是最后一个簇
FF0H----FF6H 保留簇
1400H-25FFH 为文件分配表FAT2 起始标志为:F0 FF FF
长度为1200H(4608)字节 [第10-18扇区]
作为FAT1的备份。原理同上。
2600H-41FFH 根目录区ROOT 文件目录表。长度为1C00H(7168)字节
[第19-32扇区]
文件目录表中每个文件登记项占用32个字节,一共可以存储224个文件。
数据都是以高位在前,低位在后的方法计算的。
文件名从2600H(9728)开始
文件名之间相差20H(32)字节。
(08字节)
第01-08位是文件名,不足8个用20H填满。其中第01位为00H时,表示此项未用,为E5时表示此项已经删除。
(03字节) 第09-11位是扩展名,不足3个用20H填满。
(01字节) 第12位是文件属性,具体含义是:
20为归档文件。
01为只读文件,不能对其进行修改和删除。
02为隐含,不能用DIR命令进行查找。
04为系统文件,也不能用DIR命令进行查找。
10表示此项为子目录,而不是文件。
28表示此项为磁盘的卷标,即磁盘的名字,不是文件。
(01字节) 第13位 保留字段,没有使用。
(01字节) 第14位 毫秒计数。
(02字节) 第15-16位 建立文件的时间。其中:[时5位 分6位 秒5位*2](二进制位)
(02字节) 第17-18位 建立文件的日期。其中:[年7位+1980 月4位 日5位](二进制位)
0~119分别代表1980~2099
(02字节) 第19-20位 最后访问日期。其中:[年7位+1980 月4位 日5位](二进制位)
(02字节) 第21-22位 首簇号高16位。一般文件太大时会有首簇高位。
(02字节) 第23-24位 文件的修改时间。其中:其中:[时5位 分6位 秒5位*2](二进制位)
(02字节) 第25-26位 文件的修改日期。其中:[年7位+1980 月4位 日5位](二进制位)
(02字节) 第27-28位 文首簇号低16位。件占用的第一个簇号,即起始簇。
(04字节) 第29-32位 文件的长度。
1、结构:2面、80道/面、18扇区/道、512字节/扇区
扇区总数 = 2面 * 80道/面 * 18扇区/道 = 2880扇区
存储容量 = 512字节/扇区 * 2880扇区 = 1440 KB
2、物理扇区号:
2 面: 编号0----1
80道: 编号0----79
18扇区:编号1----18
3、相对扇区号:共2880个扇区,相对扇区号范围为 0----2879
编号顺序:
扇区物理号 相对扇区号
0面,0道,1扇区 0
0面,0道,2扇区 1
0面,0道,3扇区 2
……………………
0面,0道,18扇区 17
1面,0道,1扇区 18
……………………
1面,0道,18扇区 35
0面,1道,1扇区 36
0面,1道,18扇区 53
1面,1道,1扇区 54
……………………
1面,79道,18扇区 2879
文件的大小用字节表示,但在存储的时候却是以簇为分配单元,即一个簇中不能包含两个文件的内容。
也就是说无论一个文件有多小,哪怕它只有一个字节,一旦它占用了一个簇,那么别的文件就不能再写入这个簇了。
也就是说这个簇中其它还未用上的空间就被浪费了。
每个簇由一个或多个扇区构成,对软盘来说,一个簇只有一个扇区,即512字节。
对于硬盘,簇的大小和硬盘分区大小有关,分区容量越大,每个簇的扇区数就越多。
对一个含有5个字节的文件,它在软盘上至少要占用512个字节,在硬盘上会更多。
磁盘存储方式:
文件数据以每 512字节/扇区 写一块。如果数据不足512字节,则剩余部分用00H填充。
如:一个文件的大小为300字节,那么该文件在磁盘里面的储存方式为:前300字节为文件的数据,后(512-300)字节的数据为00H。
当DOS写文件时,首先在文件目录中检查是否有相同文件名,若无则使用一个文件目录表项,然后依次检测FAT中的每个表项
对应的簇中,同
时将该簇号写入文件目录表项相的26-27字节,如文件长度不止一簇,则继续向后寻找可用簇,找到后将其簇号写入上一次找到的表项中,如
此直到文件结束,在最后一簇的表项里填上FFF8H,形成单向链表。
当DOS删除文件时只是把文件目录表中的该文件的表项第0个字节改为E5H,表此项已被删除,并在文件分配表中把该文件占
用的各簇的表项
清0,并释放空间。其文件的内容仍然在盘上,并没有被真正删除,这就是undelete.exe,unerase.exe等一类恢复删除工具能起作用的原
因。
文章评论(0条评论)
登录后参与讨论