FAT文件系统初识

    最近在阅读《现代操作系统》的时候看到了fat32系统的讲解,在这里记录一下。

    我觉得fat32文件系统首先是基于链表分配的机制的,首先有一个基础知识,就是文件是由一系列的块组成的,想要访问完整的文件,就必须知道这个文件的所有的块的位置,链表分配的机制在于,每一个文件块中都有指向下一个文件块的指针,这样,知道了第一个文件块,就可以顺着链表找到所有的文件块。

    而说FAT32是基于链表分配的机制的原因就是在于fat文件系统集成了每个文件块中都有指向下一个文件块的指针这种思路,但是具体实现方式不是在采用指针的方式,fat有一张表,叫做文件分配表(file allocation table),简称FAT,是用来磁盘分区上每一个块是否空闲的,表项号就是对应块号,如果某一个块3属于文件A,则fat表的第三个表项的值就是-1或者另一个块号,当为-1时表示这个块是文件的最后一个块。如果某个块6是空闲块,那么,fat的第6个表项的值就是空的。

fat索引(磁盘块号) 下一个磁盘块号
1  
2 3
3 5
4  
5 -1

    上面这幅图表示的一个简单的FAT的示例,如果一个文件的第一个块的块号是2,那么可以在fat表中的值下一个块号是3,在下一个块号是5,并且块5是这个文件的最后一个块。

    另外,块1和块4是空闲块。

    在我看来,fat32就是一个图,用以帮助文件系统分配空间以及查找文件所有块的。

    那么顺便说一个新的话题,每个目录项目都包含了一个文件的属性,其中就有文件的首个文件块的块号,根据这个文件块号可以找到这个文件所有的文件块。

猜你喜欢

转载自blog.csdn.net/challeng_everything/article/details/79826944