您的位置:首页 > 其它

FAT文件系统工作原理

2014-01-09 01:31 274 查看
        前几天复习操作系统的时候,把文件系统恶狠狠的补了一遍。记性不太好,为了方便以后自己的查阅,先在这里做个笔记。也与大家分享分享,希望大家能指出我理解的不足指处。

      图片是手画的,比较挫,也许只有自己才能看的懂了,不过还是解释一下。


     1.   FAT文件系统的核心是内存中的FAT表,表中的地址和磁盘的块地址是一一映射的关系。

            FAT文件表每一项有两个含义。1.项的地址代表当前文件的数据实际存储在磁盘中的块的地址。2.项的数据代表,文件的下块数据所在磁盘中的地址。

      2.  文件的描述信息,文件的属性,开始块(文件数据块的首地址),文件名等信息均存储在文件的目录项之中。只要找到了文件的目录项,就可以找到该文件,读取该文件。文件的目录项存储在文件知己父目录的数据区里面。

      3.   每次磁盘分区的所有文件的目录项均存储在该分区的一块集中的地址上面,即目录的目录项的信息是集中存储的。

下面举例说明FAT文件系统的索引过程。

给定文件目录:   /source/com/happy.txt,要读取该文件的内容,操作系统时如何找到它,并读取它的内容呢?

      1.从分区的根目录的目录项的FIRST BLOCK(这里假设为10)对应的磁盘空间(磁盘的地址的第10块)中去查找根目录的目录项集中目录项文件名为source的目录项(这里需要明白,目录的数据区里面存的全是目录项)。直达匹配找目录项中文件名为source的为止(这里假设在第一个磁盘的BLOCK中就找到的需要的目录项,在下面的叙述中会介绍到如果没有在第一个BLOCK中找到需要的目录项的处理方式)。此时,已经找到了source的目录项。找到了source的目录项,就可以对source这个目录文件进行读取操作了。其实重点是要读取source里面包含的其目录下的文件的目录项信息。

      2.假设source的目录项的FIRST BLOCK的数据位100,则去磁盘的第100块中去匹配目录项的文件名为com的目录项。若找到进入3步骤。若没有找到,则到读取FAT表的第100个地址中的数据,这里假设为150(FAT表的作用在此,真正体现了出来).则这个150代表,目录文件下一块数据的地址。此时,只需去磁盘的第150块中去匹配目录项文件名为com的目录项。重复上面的步骤,知道找到com的目录项为止。

      3.从com这个目录下找到happy.txt的目录项的方法和2相同。

      4.从happy.txt中读取其信息。方法和2步骤的方法是一样的,不过这里体现除了目录和文件的区别(目录的数据区是存放的该目录下的文件的目录项信息,用于查找文件。而普通文件的数据区则存储的是文件的实质信息,用于存储用户产生的实际数据。)

- - - - - - - - - - - -  - - - -- - - - - -- - - - - -- - - - - - - -- - - - - - -- - - - - -- -  - - -- - - - - -- - - - -- - - - - - - - - -- - - - -- - - - - -- - - - - -- - - - -- - - - - - - -- - -

      FAT文件系统的工作原理,大概已经介绍完了,其中包含自己结合书上的知识脑补的一些东西,由于自己水平的原因,有些东西还是值得探讨的。

      补充:

      1.从FAT表的构造原来来看,其优缺点很明显就能体现出来。当BLOCk的大小一定,磁盘的空间很大时,那FAT表的表项的数量就会很大,占用大量的内存空间。因此FAT文件系统不适合作为大存储的文件系统。

      2.WINDOWS中采用FAT32存储时,文件的大小不能超过4G(不知道你发现了没有呢),原因与FAT32的32无关,知识FAT32的文件系统中,文件的目录项中有一个用来记录文件大小的字段,其大小为4byte,因此,文件的最大长度为4G啦。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息