打印
[应用方案]

FAT文件系统解析

[复制链接]
1254|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
quray1985|  楼主 | 2015-12-21 21:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
启动扇区:
1 offset 00: EB 58 90  JMP指令,字节数 3。灰线。
2 offset 03: 4D  53  44  $2  53  35  2E  30   MSDOS5.0 厂商版本号。 字节数 8  灰色方框。
以下部分是BIOS block.
3 offset 0B: 00  02 每扇区字节数:512  字节数 2.  红色线。
4 offset 0D: 08  每族占用的扇区数8个。字节数 1.  绿色方框。
5offset 0E: 26 00 保留扇区中的保留扇区数 38个。字节数 2. 蓝色线。则FAT1的开始地址:38*512=19456=$200.
6 offset 10: FAT表的个数。一般都为2 一个作备份用。字节数1. 红色方框线。
7 offset 11-20 为一些我们不需要操作的信息。所以没有写出来。



以下是FAT32   参数块。

沙发
quray1985|  楼主 | 2015-12-21 21:12 | 只看该作者
8 offset 24  E5 0E  FAT表占用的扇区数:3813个。 FAT表占用的字节数就是 3813*512=1952256byte=1DCA00。一共两个FAT共占用 1952256*2=3904512个。



根据启动区、FAT1FAT2、根目录、数据区的次序,可以依次计算出它们的首地址:
启动区:00
FAT1:   38*512=19456=$200.
FAT2:   19456+3813(FAT 表占用的扇区数)*512=1971712=1E1600
根目录区: 1971712+ 3813(FAT 表占用的扇区数)*512=3923968=3BE000.
数据区:


使用特权

评论回复
板凳
quray1985|  楼主 | 2015-12-21 21:13 | 只看该作者
下面分析根目录区:
$2$2$2$2$2$2$2  


这里使用的是FAT32短文件目录项,每32个字节表示一个文件(文件夹也是),32个字节的表示定义分别如下
10ffset: 00,红色部分 表示卷标即SD卡名称,是你在格式化时取的一个名子。8个字节。
2offset: 20 字节数:8个。 表示文件名称。全部是以大写方式表示。文件名:csh302ab.
3offset:28  字节数:3个。 文件扩展名。 ASSII码表示。
4offset 2B  字节数:1个。 文件属性。绿色框。
5offset $2  reserved.
6offset 2D,2E,$2 文件建立时间。访问日期。

使用特权

评论回复
地板
quray1985|  楼主 | 2015-12-21 21:18 | 只看该作者




7offset 34,35, $2,3B 该文件的开始簇号 高位字节,低位字节。00 00 00 03,根据这个就可以找到文件下一个簇号在FAT1中的位置了。$200+3*4=$2$2.下一个簇开始地址。
8、黑色线。文件长度。$2=148316字节。因为文件是按照整簇来存放的,不够一个簇的大小,也要给一个簇的空间。
下面分析文件的存放空间:
BOSI 参数块中可以知道其每簇占用8个扇区。每个扇区512字节,那么一个簇的空间是8*512=4096个字节,文件长度为148316个字节,则占用了148316 / 4096=36.2=37个簇。

使用特权

评论回复
5
quray1985|  楼主 | 2015-12-21 21:19 | 只看该作者




上面已经从根目录区得到文件第一个开始簇为03 则开始簇开始地址为:3BE000(根目录区首地址)+03-02*8*512=3BF000.文件存放位置的起始地址:
则文件存放第一个簇开始地址为:3BF000.
文件存放第二个簇开始地址为:3BE000+(4-2) *4096=$20000.
文件存放第三个簇开始地址为:3BE000+(5-2) *4096=$21000.
  .
.
文件存放第37个簇开始地址为:3BE000+(39-2) *4096=3E3000.  内容为0x$2 FF FF FF,文件放置结束,没有了。

使用特权

评论回复
6
捉虫天师| | 2015-12-21 23:44 | 只看该作者
File Allocation Table的简称。微软在Dos/Windows系列操作系统中共使用的一种文件系统的总称,FAt12、FAT16、FAT32均是Fat文件系统。FAT文件系统将硬盘分为MBR区、DBR区、FAT区、FDT区、DADT区等5个区域。

使用特权

评论回复
7
捉虫天师| | 2015-12-21 23:45 | 只看该作者
Fat32文件系统将是Fat系列文件系统的最后一个产品。和它的前辈一样,这种格式采用32位的文件分配表,磁盘的管理能力大大增强,突破了FAT16 2GB的分区容量的限制。由于现在的硬盘生产成本下降,其容量越来越大,运用FAT32的分区格式后,我们可以将一个大硬盘定义成一个分区,这大大方便了对磁盘的管理。

使用特权

评论回复
8
捉虫天师| | 2015-12-21 23:46 | 只看该作者
FAT32推出时,主流硬盘空间并不大,所以微软设计在一个不超过8GB的分区中,FAT32分区格式的每个簇都固定为4KB,与FAT16相比,大大减少了磁盘空间的浪费,这就提高了磁盘的利用率。在其他更大的分区中的簇大小的可以看下表:
Volume size
Cluster size
less than 8GB
4 KB
less than 16GB
8 KB
less than 32GB
16 KB
more than 32gB
32 KB
目前,支持这种格式的操作系统有Windows 95、Windows 98、OSR2、Windows 98 SE、Windows Me、Windows 2000和Windows XP,Linux Redhat部分版本也对FAT32提供有限支持,然而,如果Linux安装在FAT32分区下,必须使用软盘进行引导。但是,这种分区格式也有它明显的缺点,首先是由于文件分配表的扩大,运行速度比FAT16格式要慢,特别是在DOS 7.0下,性能差别更明显。

使用特权

评论回复
9
643757107| | 2015-12-22 11:39 | 只看该作者
由于向后的兼容性,所以以后的操作系统应该也会支持FAT的,毕竟更适合小盘的文件系统。

使用特权

评论回复
10
yiyigirl2014| | 2015-12-22 14:18 | 只看该作者
FAT32最大好像只能保存4G的文件,再大的文件无法保存,所以高清电影没法保存在FAT32的硬盘分区里。

使用特权

评论回复
11
gejigeji521| | 2016-1-19 11:04 | 只看该作者
微软在Dos/Windows系列操作系统中共使用的一种文件系统的总称,FAt12、FAT16、FAT32均是Fat文件系统

使用特权

评论回复
12
DreamofOven| | 2016-1-21 09:18 | 只看该作者
那怎么选用fat12、16或者32呢?

使用特权

评论回复
13
huangcunxiake| | 2016-1-25 22:38 | 只看该作者
File Allocation Table,首字母缩略字:FAT),是一种由微软发明并拥有部分专利的文件系统,供MS-DOS使用

使用特权

评论回复
14
玛尼玛尼哄| | 2016-1-25 23:29 | 只看该作者
offset: 20 字节数:8个。 表示文件名称。全部是以大写方式表示。文件名:csh302ab.

使用特权

评论回复
15
23jiekou| | 2016-1-26 13:08 | 只看该作者
大的文件无法保存吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

156

主题

1488

帖子

5

粉丝