没有合适的资源?快使用搜索试试~ 我知道了~
Fat文件系统原理3(通俗易懂Fat文件系统原理,适合初学者学习)
需积分: 0 4 下载量 3 浏览量
2008-11-14
09:42:22
上传
评论
收藏 225KB DOC 举报
温馨提示
试读
14页
(通俗易懂Fat文件系统原理,适合初学者学习)
资源详情
资源评论
资源推荐
FAT 文件系统原理(三)
作者:菜刀
4.3FAT 表和数据的存储原则。
FAT 表(File Allocation Table 文件分配表),是 Microsoft 在 FAT 文件系统中用于磁盘数据(文
件)索引和定位引进的一种链式结构。假如把磁盘比作一本书,FAT 表可以认为相当于书中的目录,而
文件就是各个章节的内容。但 FAT 表的表示方法却与目录有很大的不同。
在 FAT 文件系统中,文件的存储依照 FAT 表制定的簇链式数据结构来进行。同时,FAT 文件系统
将组织数据时使用的目录也抽象为文件,以简化对数据的管理。
单击此处查看
PDF
版全文
★存储过程假想:
我们模拟对一个分区存储数据的过程来说明 FAT 文件系统中数据的存储原则。
假定现在有一个空的完全没有存放数据的磁盘,大小为 100KB,我们将其想象为线形的空间地
址。为了存储管理上的便利,我们人为的将这 100KB 的空间均分成 100 份,每份 1KB。我们来依次
存储这样几个文件:A.TXT(大小 10KB),B.TXT(大小 53.6KB),C.TXT(大小 20.5KB)。
最起码能够想到,我们可以顺序的在这 100KB 空间中存放这 3 个文件。同时不要忘了,我们还要
记下他们的大小和开始的位置,这样下次要用时才能找的到,这就像是目录。为了便于查找,我们假
定用第 1K 的空间来存储他们的特征(属性)。还有,我们设计的存储单位是 1KB,所以,A.TXT 我们
需要 10 个存储单位(为了说明方便,我们把存储单位叫做“簇”吧。也能少打点字,呵呵。),B.TXT 需
要 54 个簇,C.TXT 需要 21 个簇。可能有人会说 B.TXT 和 C.TXT 不是各自浪费了不到 1 簇的空间
吗?干嘛不让他们紧挨着,不是省地方吗?我的回答是,如果按照这样的方式存储,目录中原本只需
要记下簇号,现在还需要记下簇内的偏移,这样会增加目录的存储量,而且存取没有了规则,读取也
不太方便,是得不偿失的。
根据上面所说的思想,我们设计了这样的图 4.3.1 所示的存储方式。
我们再考虑如何来写这三个文件的目录。对于每个文件而言,一定要记录的有:文件名,开始
簇,大小,创建日期、时间,修改日期、时间,文件的读写属性等。这里大小能不能用结束簇来计算
呢?一定不能,因为文件的大小不一定就是整数个簇的大小,否则的话像 B.TXT 的内容就是 54KB 的
内容了,少了固然不行,可多了也是不行的。那么我们怎么记录呢?可以想象一下。为了管理上的方
便,我们用数据库的管理方式来管理我们的目录。于是我把 1KB 再分成 10 份,假定开始簇号为 0,
定义每份 100B 的各个位置的代表含义如图 4.3.2
这样设计的结构绝对可以对文件进行正确的读写了。接着让我们设计的文件系统工作吧。先改动
个文件,比如 A.TXT,增加点内容吧!咦?增加后往哪里放呀,虽然存储块的后面有很多空间,但紧
随其后 B.TXT 的数据还顶着呢?要是把 A.TXT 移到后边太浪费处理资源,而且也不一定解决问题。这
个问题看来暂时解决不了。
那我们换个操作,把 B.txt 删了,b.txt 的空间随之释放。这时候空间如图 4.3.3,目录如图 4.3.4
这个操作看来还可以,我们接着做,在存入一个文件 D.txt(大小为 60.3KB),总共 100 簇的空间
只用了 31 簇,还有 68 簇剩余,按说能放下。可是?往那里放呢?没有 61 个连续的空间了,目录行
没办法写了,看来无连续块存储暂时也不行。
你一定能够想到我们可以在连续空间不够或增加文件长度的时候转移影响我们操作的其他文件,从
而腾出空间来,但我要问你,那不是成天啥也不要干了,就是倒腾东西了吗?
看来我们设计的文件系统有致命的漏洞,怎么解决呢?。。。。
。。。。。。
其实可以这样解决:
首先我们允许文件的不连续存储。目录中依然只记录开始簇和文件的大小。那么我们怎么记录文件
占用那些簇呢,以文件映射簇不太方便,因为文件名是不固定的。我们换个思想,可以用簇来映射文
件,在整个存储空间的前部留下几簇来记录数据区中数据与簇号的关系。对于上例因为总空间也不
大,所以用前部的 1Kb 的空间来记录这种对应,假设 3 个文件都存储,空间分配如图 4.3.5,同时修
改一下目录,如图 4.3.6
第一簇用来记录数据区中每一簇的被占用情况,暂时称其为文件分配表。结合文件分配表和文件
目录就可以达到完全的文件读取了。我们想到,把文件分配表做成一个数据表,以图 4.3.7 的形式记
录簇与数据的对应。
用图 4.3.7 的组织方式是完全可以实现对文件占有簇的记录的。但还不够效率。比如文件名在文
件分配表中记录太多,浪费空间,而实际上在目录中已经记录了文件的开始簇了。所以可以改良一
下,用链的方式来存放占有簇的关系,变成图 4.3.8 的组织方式。
剩余13页未读,继续阅读
bensentray
- 粉丝: 3
- 资源: 11
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0