第五讲构造文件管理系统FAT.docx

上传人:b****2 文档编号:549444 上传时间:2023-04-29 格式:DOCX 页数:9 大小:45.23KB
下载 相关 举报
第五讲构造文件管理系统FAT.docx_第1页
第1页 / 共9页
第五讲构造文件管理系统FAT.docx_第2页
第2页 / 共9页
第五讲构造文件管理系统FAT.docx_第3页
第3页 / 共9页
第五讲构造文件管理系统FAT.docx_第4页
第4页 / 共9页
第五讲构造文件管理系统FAT.docx_第5页
第5页 / 共9页
第五讲构造文件管理系统FAT.docx_第6页
第6页 / 共9页
第五讲构造文件管理系统FAT.docx_第7页
第7页 / 共9页
第五讲构造文件管理系统FAT.docx_第8页
第8页 / 共9页
第五讲构造文件管理系统FAT.docx_第9页
第9页 / 共9页
亲,该文档总共9页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

第五讲构造文件管理系统FAT.docx

《第五讲构造文件管理系统FAT.docx》由会员分享,可在线阅读,更多相关《第五讲构造文件管理系统FAT.docx(9页珍藏版)》请在冰点文库上搜索。

第五讲构造文件管理系统FAT.docx

第五讲构造文件管理系统FAT

构造文件管理系统FAT

对硬盘进行了低级格式化、分区后,再进行高级格式化,这时该逻辑磁盘便有了DBR,同时也有了FAT(注意:

以独立主分区来讨论!

)。

FAT是微软最早推出的管理文件的方式,目前有三种不同的格式如FAT12、FAT16、FAT32等。

他们的文件管理思想是相似的。

FAT用于磁盘数据(文件)进行索引、定位的一种簇链式结构。

同时FAT文件也包括文件夹的管理,如同文件的管理,简单理解为数据的管理。

下面,以一个假想的文件管理的思想来讨论FAT的文件管理。

1、“一本书”的管理思想

一本书对其上的文章的管理,可以看出,一本书有目录,目录中有文章的篇名及该文章的页码。

读者就可以根据目录中的文章篇名和文章页码来找到该文章。

事实上,在书的目录中还隐含了其他有用的信息,如一篇文章的开始位置、结束位置(也隐含了文章的长度)等信息。

可以进一步来看,假定该书可以任意装订,也就是该书可以由读者任意编排文章。

在这种情况下,一篇文章如何加入到某页码中、或把一篇文章从书中撕掉,对应的目录又如何修改?

还要考虑加入的或撕掉的文章的日期、文章的长度?

2、构造一个线性的文件管理系统

根据一本书的对文章的管理思想,在一个主分区内,理解进行文件的管理思想(或是数据存储的原理)。

在该分区,已分好了区(由FDISK完成!

)、进行了高级格式化(由FORMAT完成!

),于是便有了MBR、DBR及某种FAT。

不过,MBR及DBR暂时不考虑!

这里只关心FAT!

现在假定有100KB的一个分区。

可以简单地认为:

这100KB是线性地地址空间!

为了讨论方便,把这100KB分成100份,每份1KB!

再假定,有三个文件要依次存储在这100KB地空间中,这三个文件是:

1.A.TXT10KB;

2.B.TXT53.6KB;

3.C.TXT20.5KB

很自然地想到,为了要与一本书地管理方式相同,这三个文件是顺序地存放在这100KB的空间中的。

同时,要注意,这三个文件的大小、文件开始的位置等信息!

为了能方便地进行文件地查找,这是必须要考虑的信息!

如同书的目录!

在这个目录中,用100KB中的第一个1KB来放这个目录。

这个目录,就是我们所说的这三个文件的特征,或叫文件的属性!

另外,还要了解,100KB空间,分成了100份后,每份为1KB,而且是该分区中的最小单位,是不能再分割的,我们就把这个1KB叫扇!

同时也叫簇!

很明显,A.TXT是10KB,就要用10个扇,或叫10个存储单位,或叫10个簇!

B.TXT是53.6KB,要54个簇;

C.TXT是20.5KB,要21个簇。

如下图4.3.1的存储方式。

(可以看出这样一个问题!

B.TXT和C.TXT的这种存放方式,不是要浪费空间吗?

(各自浪费了不到1簇的空间)能不能紧挨着!

关于这个问题,将在后面讨论!

提示:

如果按照这样的方式存储,目录中原本只需要记下簇号,现在还需要记下簇内的偏移,这样会增加目录的存储量,而且存取没有了规则,读取也不太方便,是得不偿失的。

接下来,要考虑这三个文件的目录内容(存储的属性!

)有那些!

与书的目录比较!

对于一个文件而言,有:

(1)文件名;

(2)开始的位置(即所在簇的位置号);

(3)文件大小;

(4)创建日期、时间;

(5)文件可能的修改日期、时间;

(6)文件可能的读写属性等。

(注意:

一个问题!

文件的大小能不能用结束的簇号来表示呢?

肯定是不能的!

提示:

要注意簇号必须是整正数!

对于文件B.TXT,大小是53.6KB,是无法用簇来表示的,而用54簇或53簇来表示又是无意义的!

为什么?

有了这些文件的属性后,就可以用数据库的思想来存放这些文件的属性了!

方法是:

在100KB的第一个1KB的空间内,看成是10份(每份100B)文件的属性记录。

就有了10条数据库记录。

如下图4.3.2!

(对于用100B来存放文件的属性是足够用的!

看来,这个文件的结构,是可以对这些文件进行正确的读写了,一下就是对这三个文件进行一些操作。

(1)读:

很自然,目录很清楚,是不成问题的;

(2)写:

要注意,一个新的文件一定要是一个14KB的、或以内的!

而且也只能写在最后面的空余空间内。

另外,假如A.TXT的10KB文件是不存在的,则新加入的文件一定要小于或等于10KB,才能在原A.TXT文件的位置放下!

(3)修改:

如果对A.TXT这个10KB的文件进行修改,其修改后的大小是不能大于10KB!

(4)超写:

如果对A.TXT文件修改后(增加了内容!

),大于了10KB,或新放一个大于10KB的文件,将如何进行?

对于前面的三种操作是能够顺利进行的,对于第四个操作,有什么解决方法?

一个方法是:

由于这三个文件加起来之和只有85个簇。

10KB+53.6KB+20.5KB=84.1KB

10个簇+54个簇+21个簇=85个簇

可以看出,这100KB空间还有剩余!

还余下14个簇(除掉一个目录簇!

)。

如果把A.TXT文件放在最后,要浪费处理资源,而且也不一定解决问题。

这个问题看来暂时解决不了。

如果把B.TXT和C.TXT文件向后移动!

也是相同的问题!

(那不是成天啥也不要干了,就是倒腾东西了吗?

另外一个解决方法是:

要加大A.TXT文件的容量,可以把B.TXT文件删除了!

同时,在A.TXT文件处,还可以放一个大的文件,但是,这个文件不能大于64个簇(10个簇+54个簇)!

接下来,不可避免地,(目前假定,A.TXT和C.TXT文件还存在,共用簇为31个簇,还余下68个簇!

),要在B.TXT的位置放一个文件,假定文件为:

D.TXT,大小为60.3KB,占用簇为61簇。

如下图4.3.3和4.3.4!

这个操作看来还可以,按说能放下。

可是往那里放呢?

没有61个连续的空间了,不可能把一个文件切割成两个文件来存放,而且目录行没办法写了,一个文件也不可能有两个目录。

看来无连续块存储暂时也是不行的。

可以看出,以前的假定,文件必须是连续空间的存储方法!

这个文件管理系统(方法)有问题!

进入了僵局!

3、构造一个非线性的文件管理系统(一个FAT的雏形!

有一种杂志,由于排版的问题,可以让一些文章在不同的页中排版,并在转页的那一页标明要转到的那一页,也就是一篇文章可以拆成几个部分分别排在书的不同位置。

这是一个十分重要的思想!

这就是说:

允许文件不连续地存放!

或是,文件可以在不同的簇中存放!

很明显,如果还用以前设计的文件目录结构,又如何反映文件在不同簇中的存放呢?

解决方法1:

以文件映射簇!

也就是一个文件用了多少簇,就在目录中加入这些文件簇的相关记录!

很明显,这个方法使问题更复杂了!

首先是,目录空间可能不够用!

第二是,同一个文件有若干个属性记录!

当如果文件名修改后,还得对这些记录进行修改!

看来,用文件映射簇的方法不可取!

解决方法2:

如果换个思想,以簇来映射文件呢?

具体做法是:

在100KB的第一个1KB中,即第0簇,专门用来存放数据区中数据与簇号的关系!

也就是用来记录数据区中每一簇的被占用情况,暂时称其为文件分配表(将来的FAT)。

假定,还是以前的三个文件!

如图4.3.5和4.3.6。

第1簇还是原来的目录,数据就从第二簇开始存放!

现在就把0簇叫文件分配表FAT!

很明显,有了“文件分配表”和“文件目录”,就可以完全解决文件的自由读写和自由修改了!

这个文件分配表是一个数据表,也是被构造出来的一个数据表。

如图4.3.7记录了簇与数据(文件)的对应关系:

该组织方式是完全可以实现对文件占有簇的记录的。

但还不够效率,从这张表可以看出,也有问题!

就是太罗嗦!

比如文件名在文件分配表中记录太多,浪费空间,而实际上在目录中已经记录了文件的开始簇了。

簇所对应的文件名,要反复地使用,而文件名本身要占用一定地空间,所以,这个文件分配表会随文件的修改而越来越大,最后会空间不够!

即是一个簇与文件名的对应要占用多个字节!

所以,这个文件分配表不合理!

事实上,在文件目录中,一个文件的目录记录,已标明了该文件的文件名,同时,也是重要的一点,他标明了该文件的开始簇!

那么,能不能在文件分配表中,只用2个字节来表示簇与数据(文件)的对应呢?

这又是一个重要的思想!

也就是:

用链的方式来存放占有簇的关系!

如图4.3.8。

原来是簇对应数据(文件)的文件名,现在簇号对应的是文件占用的下一个簇的簇号!

这样,文件分配表的容量问题也解决了,这就是改良的文件分配表!

理解文件分配表的意义:

如文件a.txt,根据目录项中指定的a.txt的首簇为2,然后找到文件分配表的第2簇记录,上面登记的是3,就能确定下一簇是3,找到文件分配表的第3簇记录,上面登记的是4,就能确定下一簇是4......直到指到第11簇,发现下一个指向是FF,就是结束。

文件便丝毫无误读取完毕。

另外一种情况是:

在前面提到的问题,就是将b.txt删除以后,存入一个大小为60.3KB的d.txt。

利用簇链可以很容易的实现。

实现后的磁盘如图4.3.9 、4.3.10 和4.3.11。

请同学们自己分析图4.3.9、4.3.10和4.3.11的对A.TXT文件进行读、写、修改等的操作过程!

可以看出,原来的三个文件的存放问题,要对其进行修改、读取、写入等已完全解决了!

总之,虽然以上是人们对文件存储的一种假设,但是,这也是“FAT文件系统”的思想精髓!

在后面的内容中,将重点介绍FAT文件管理系统的相关原理!

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2