1,fat32中一个文件至少要占用整数个cluster,一个cluster要占用2的整数次幂个数的sector,fat32中要使用cluster的原因是:因为如果要写入一个大档案,如果用sector的配置方式,那么sector数量就很大,并且分配在零散的空间,不便于管理,又由于cluster是连续的sector,所以可以加快访问时间。

如何知道某个file/dir占用的起始cluster? 答:根据dir entry structure

如何知道某个file/dir含有哪些clusters? 答:根据FAT table

 

2,为什么FAT12和FAT16的RootDir单独占用region,其大小由 BPB_RootEntCnt指定,而FAT32取消了这个,RootDir直接放在cluster2的位置?
答:如果开始就将RootDir里的dir entry structire占用的cluster个数定下来的话,这样根目录下能放的目录或者文件个数就已经有了最大的限制,因为一个dir entry struct占用32byte,所以一个cluster能占用的dir entry struct个数是固定的。

 

3,当一个目录的档案非常多导致一个cluster不够用的时候,系统可以再分配一个cluster给这个目录,同时修改这个目录对应的FAT表,所以上述方法使得子目录的个数只受磁盘容量的限制。

 

4,根目录的起始cluster是固定的(从bootsector可以读出,FAT32的root dir cluster通常为2),根目录的dir entry的DIR_Attr为ATTR_VOLUME_ID,并且其dir entry里的DIR_FstClusLO为0,根目录所在的cluster(FAT32通常为cluster2)里记录了根目录下子目录或者根目录下文件的dir entry信息,比如根目录下有三个文件 A B C和三个目录D E F,那么cluster2里前会有6个dir entry,分别记录A B C D E F的dir entry信息,A B C文件真正的内容则会根据cluster2里A B C对应的dir entry找到存放文件真正内容的cluster,存放文件真正内容的cluster里不会再次记录文件的dir entry信息。

posted on 2014-11-01 22:21  知了112  阅读(476)  评论(0编辑  收藏  举报