FAT16文件系统简介(二)


上篇我们介绍了FAT16文件系统的引导扇区,本篇将继续介绍FAT16文件系统

紧接着引导扇区的就是文件分配表结构。文件分配表到底是一个什么东西呢?大家可以回忆一下操作系统原理课程上讲过,文件系统的组织方式有两种:索引和链表。其中链表式组织方式的典型代表就是FAT文件系统家族。

在FAT16文件系统中,磁盘空间以簇为单位分配。每簇为2-64个扇区。文件分配表是一个16位整数类型的大数组,数组的每一项都对应磁盘中相应的一簇。比如文件分配表的第2项就对应磁盘中的第2簇。文件分配表中每项的内容则表示文件的下一簇的簇号。也就是说文件分配表以链表的方式指出了每个文件在磁盘上的位置。我们以下图为例:

 

 


当我们已知某文件第一簇的簇号为1000的时候,我们就可以在文件分配表的第2000项中找到下一簇的簇号。图中是1001,顺着链表,我们可以依次找到文件的第3簇(2000)、第4簇(1004)。 在第4簇的位置,我们发现下一簇的簇号为FFFF,这就表示这第4簇已经是最后一簇。换句话说,我们只要知道文件的第一簇,我们就可以通过文件分配表依次找到文件的所有簇。看到这里,想必大家已经了解文件分配表在FAT文件系统中的俄重要性。所以,为了保险起见,文件分配表会有一个备份。在上一篇中提到的BIOS参数块中就有一个域描述了文件系统中有几个文件分配表。

现在我们来看下如何得到一个文件的第一簇。

紧跟着文件分配表和文件分配表备份的是一个叫做根目录区的部分。每一个存放在根目录下的文件在这里都有一条记录。记录的数据结构可以用如下C++结构来表示:

 

大家看到,在这个结构中有一个域描述了文件的首簇号,也就是文件的第一簇。从这一簇出发,我们就可以在文件分配表中找到文件的所有块。假如这个文件是一个目录(attribute域的第5位为1)那么这个文件描述了一个子目录,文件的内容和根目录区一样,是一串DirEntry数据结构。


在根目录区之后,就是数据区。注意,FAT16文件系统的数据区簇号从2开始,没有第0簇和第1簇!

好了,到此为止,我想读者已经可以编写程序读取FAT16文件系统了。下一篇讲开始介绍引导程序的第二部分:分区引导程序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值