12-13文件分配

连续分配:

光盘比较适合上述方法,写入之后不需要改变。

灵活的添加、删除,扩展,那么连续分配方式开销很大。

对它的数据块分配可以采取类似前面讲的内存的连续分配算法:最先适配、最佳适配、最差适配。

链式分配:

数据块以链表的形式组织起来,连续分配是数组的形式组织起来的,

链表增加和删除很方便,

不可能进行真正的随机访问的意思是,比如你要访问第二块,必须先要找到第一块,是串行访问的特征。

不可靠:前面提到文件系统它是存在硬盘上的,那有时候突然断电,数据来不及保存到磁盘,这个链接信息可能会丢失,一旦丢失,可能整个文件就崩溃了,就不是一个完整文件。

索引分配:

索引分配:会把特定的一些磁盘块作为索引的一个功能来体现,这个索引数据块指出了这个文件所需要的数据在磁盘块的位置,一般会把这个索引的这个数据块专门放在文件头里面保存起来,作为元数据的一部分保存起来,使得我们得到这个索引块之后调到内存里面,然后再去查找对应的你要访问的那个文件中的位置和对应的磁盘块位置是哪些。然后就完成后续的这个检测工作。

它不像链式存储,它不得不一个一个的磁盘块都顺着找才能找到,而这里我们只需要把一个索引块调到内存中去,基于索引块可以找着数据块的位置,从而实现高效的无论是顺序访问还是随机访问。

缺点:

如果文件特别小,甚至小于一个数据块的话,你会发现这个存储这个索引本身也要占数据块,那他这个存储的荣誉信息也相对比例比较大。

对于很大的文件也有问题,索引块也是有容量限制的,一个数据块能够描述的数据块的个数是有限的,如果文件很大,可能一个索引块就不够了,其它的数据块怎么来管理?如果扩索引块,那多个数据块是用什么来组织?如下图:

分层分配,索引分级

会引入很多开销,你要间接访问,你要读多个索引块,才能查到具体的数据块和页表是一样的。

链式索引块,有之前提到的问题,它是一种线性扩展,对于大文件的扩展能力的支持还是有限的,也是会出现断链的问题,这个使得多级索引块的存储方式更加适用于对小文件、大文件都能管理的这么一种模式。

多级索引块跟多级页表异曲同工,

 

猜你喜欢

转载自blog.csdn.net/wade1010/article/details/131248833
今日推荐