码迷,mamicode.com
首页 > 其他好文 > 详细

FAT32文件系统定位FAT文件分配表以及根目录

时间:2014-08-08 18:20:37      阅读:405      评论:0      收藏:0      [点我收藏+]

标签:文件系统   fat   根目录   

一、FAT1起始扇区 =  DBR的扇区号 + 保留扇区号

1.获取DBR的扇区号

磁盘的0号扇区的 0X1C6~0X1C9是第一个分区的起始扇区,这个扇区就是DBR

下图是本人的磁盘的0号扇区,可以看到DBR的扇区号是0X00 00 00 3F(小端格式)

bubuko.com,布布扣

2.得到保留扇区

打开DBR扇区,偏移0X0E~0X0F表示保留扇区

bubuko.com,布布扣

由图可知保留扇区数为0X00 26.

FAT1起始扇区 =  DBR的扇区号 + 保留扇区号  = 0X3F + 0X26 = 0X65

打开扇区号为0X65的扇区,这就是FAT1的起始扇区

bubuko.com,布布扣

二 .FAT2的起始扇区

FAT2是紧邻FAT1的,所以  FAT2的起始扇区 = FAT1的起始扇区 + 一个FAT的扇区数

1.FAT1的起始扇区

按照上面的方法得到,本例是0X65.

2.一个FAT的扇区数

从DBR的偏移0X24~0X27得到,由第一个图可知本例是0X3A79。

 FAT2的起始扇区 = FAT1的起始扇区 + 一个FAT的扇区数 = 0X65 + 0X3A79 = 0X3ADE

打开扇区号为0X3ADE的扇区,可以看到FAT2与FAT1是一样的。

bubuko.com,布布扣

三、根目录区

在FAT32文件系统中,根目录的位置不再硬性地固定,可以存储在分区内可寻址的任意簇内,不过通常根目录是最早建立的(格式化就生成了)目录表。

所以,我们看到的情况基本上都是根目录首簇紧邻FAT2,占簇区顺序上的第1个簇(即2号簇)。

同时,FAT32文件系统将根目录当做普通的数据文件来看,所有没有了目录项数的限制,在需要的时候可以分配空簇,存储更多的目录项。

根目录起始扇区 = 保留扇区数 + 一个FAT的扇区数 × FAT表个数 + (起始簇号-2) x 每簇的扇区数

1.保留扇区数

从DBR的偏移0X0E~0X0F得到,本例是0X65.

2.一个FAT的扇区数

从DBR的偏移0X24~0X27得到,由第一个图可知本例是0X3A79。

3.FAT表个数

从DBR的偏移0X10得到,由第一个图可知本例是0X02。一般有两个FAT表,FAT1和FAT2。

4.起始簇号

从DBR的偏移0X2C~0X2F得到,由第一个图可知本例是0X00 00 00 02。

5.每簇的扇区数

从DBR的偏移0X0D得到,由第一个图可知本例是0X08,一个簇是8个扇区。

所以 根目录起始扇区 = 保留扇区数 + 一个FAT的扇区数 × 2 + (起始簇号-2) x 每簇的扇区数 

                                      = 0X26  +  0X3A79 * 2 + (0X2 - 2) * 8 = 0XEA0A

打开扇区号为0XEA0A的扇区

bubuko.com,布布扣


FAT32文件系统定位FAT文件分配表以及根目录,布布扣,bubuko.com

FAT32文件系统定位FAT文件分配表以及根目录

标签:文件系统   fat   根目录   

原文地址:http://blog.csdn.net/liyun123gx/article/details/38440225

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!