连续文件
将逻辑文件中的信息顺序存储到连续的物理盘块中。
如下是外存中的物理盘块的分布图:
这是我们文件的目录:
在文件目录中,有两个属性的信息:文件名和物理地址(在外存中存放的位置)。
主要优点:
- 顺序访问速度快。只要找到一个盘块的位置,就可以依次很容易的找到其他的盘块。
- 可随机存取。
主要缺点:
- 磁盘空间会产生碎片。如上面的第18号盘块。
- 文件修改困难。比较难以实现文件的增删改操作。
串联文件
利用指针将文件所占的盘块连接起来。
串联文件结构(隐式链接)
串联文件的缺点:
- 文件容易丢失。一旦某一个盘块的后续位置信息丢失就会遗失之后的所有节点。
- 文件只能顺序存取。只能从第一个节点开始依次读取磁盘块。
文件映照结构(显式链接)
所有链接指针统一存放在一张显示的链接表(fat表:文件分配表)中。一个逻辑磁盘设置一张表,以物理盘块号为序,表项内容为指向某文件的下一盘块的指针。
例:若文件f1占据了2,4,5,1四个盘块:
FAT文件系统磁盘组织结构:
FAT1 和 FAT2 是互为备份的连个相同的文件。
FAT32引导区主要内容有:
- 每扇区字节数;通常512B
- 每簇扇区数;
- FAT1的位置;
- 磁盘分区大小(扇区数);
- FAT表大小(扇区数);
- 根目录位置;
- 引导区备份扇区的位置;
- 文件系统类型。
串联文件性能评价
1.存储空间利用率高;没有文件存储空间碎片的问题了。
2.文件创建时用户不必指出文件的大小;采用指针的形式。
3.文件动态扩充和修改容易。采用指针的形式。
4.顺序存取效率高,随机存取效率较低。
FAT 表大小的计算方法
例:一个磁盘分区大小为20GB,若盘块大小为1KB,计算该磁盘分区的FAT表大小?
盘块数=20GB/1KB =20MB≈2^25B,所有至少需要25个二进制位。由于每个FAT的表项可以是半个整数倍,所以25位最少取3.5个字节。所以FAT表大小=20MB×3.5B=70MB
索引文件
1、什么是索引文件
索引表:系统为每个文件建立的逻辑块号与物理块号的对照表。
如对应的文件 file1 分配到4个磁盘块:
其所构建的索引表对应的结构就是:
索引块:存放文件的索引表的物理块,其块号保存在文件目录项的物理地址中;
文件由数据文件和索引表构成。这种文件称为索引文件。
单级索引分配
就如上例所示的样子
多级索引分配
文件file2分配到1000个磁盘块:2,3,5,20,22,25,…1200,1511,若每个盘块号占4B,每个盘块1KB:
由于每个盘块只有1KB,所以最多存放的盘块号是 1KB/4B = 256个。不能存放1000个盘块号,所以需要分组,分为四个部分。为了找到刚才建立的索引块,所以我们需要建立一个二级索引来记录以及索引所占的盘块号。最好,我们需要在文件目录中记录二级索引表所占的盘块号。
混合索引分配
Unix:i 节点中的物理地址字段 iaddr(13)
iaddr(0) ~iaddr(9): 直接地址;
Iaddr(10):一级索引;
iaddr(11): 二级索引;
iaddr(12): 三级索引。
例:设某文件长度为xB,若盘块大小为4KB,每个盘块号4B,则:
(1)文件盘块数量为: n=[x/4k] + 1
(2)每个索引块能存放的盘块号数量:=4K/4 =1K(个)
对 n 进行分类:
(1)n≤10:
所有数据块号全部存放在iaddr(0) ~iaddr(9)中:
(2)10<n≤1034:
前面10个数据块号全部存放在iaddr(0) ~iaddr(9)中;
剩下的不超过1024个数据块号放在一个一级索引块中;
并将该一级索引块号存入iaddr(10)中:
(3)1034<n≤1034+1M:
前面10个数据块号全部存放在iaddr(0) ~iaddr(9)中;
剩下的不超过1024+1M个数据块号放在不超过1025个一级索引块
将第一个一级索引块号存入iaddr(10)中;
将剩下的不超过1024个一级索引块号存入一个二级索引块中;
最后将该二级索引块号存入iaddr(11)中:
(4)1034+1M<n≤1034+1M+1G:
前面10个数据块号全部存放在iaddr(0) ~iaddr(9)中;
剩下的不超过1024+1M+1G个数据块号放在不超过1025+1M个一级索引块中;
将第一个一级索引块号存入iaddr(10)中;
剩下的不超过1024+1M个一级索引块号存入≤1025个二级索引块中;
再将第一个二级索引块存入iaddr(11)中;
剩下的不超过1024个二级索引块号存入一个三级索引块中;
最后将该三级索引块块号存入iaddr(12)中:
文件物理结构的比较
- 顺序文件的优点是不需要额外的空间开销,只要在文件目录中指出文件的大小和首块的块号即可,对顺序的访问效率很高。适应于顺序存取且文件不经常修改的情况。缺点是文件动态地增长和缩小时系统开销很大;文件创建时要求用户提供文件的大小;存储空间浪费较大。
- 链接文件(串联文件)克服了连续文件的不足之处,但文件的随机访问系统开销较大。适应于顺序访问的文件。
- 索引文件既适应于顺序存访问,也适应于随机访问,是一种比较好的文件物理结构,但要有用于索引表的空间开销和文件索引的时间开销。UNIX系统和Linux系统是使用索引结构成功的例子。