三种外存分配方式的区别

文件分配方式分为三种:连续分配、链接分配、索引分配。其中链接分配又分为隐式链接分配和显式链接分配;索引分配又分为单级索引分配、两级(多级)索引分配,混合索引分配。


这里要说的是显式链接分配和索引分配(指单级)的区别。
链接分配的特点是已知一个物理块位置寻找下一个物理块位置必须通过指针进行,而且必须顺序寻找。比如我们当前位于3号物理块要去4号物理块,必须根据3号物理块中4号物理块的指针(地址)寻找,而且我们下一个访问必须是4号,而不能是5号(即使4号我们不需要)。这是链接分配的基本思想,优缺点对比连续分配很明显,自己找就可以了,这里不赘述。但是这种朴素的链接分配思想有一个致命的问题,就是一旦出现断链,后续物理块无法访问,并且我们需要的物理块不在链的前方时,顺序寻找花费大量读磁盘时间(读磁盘时间远远大于读内存时间)。所以需要对这种朴素的链接分配思想进行改造。


于是出现了显式链接分配(朴素的链接分配也是隐式链接分配),即把所有的物理块中的指针收集在一起统一放在内存的一张FAT表中(请注意是内存),这样就大大减轻了朴素链接分配思想上述致命缺点,由于地址存放在一起,所以不太容易出现丢失个别地址现象,而且内存访问速度快。但是这本质上仍然是链接分配,即进程给出文件物理块起始地址等信息,然后根据内存FAT中地址的链接情况进行查找,得到所需物理块。在查找过程中仍然是一个一个的顺序查找。


下面叙述索引分配的特点。显式链接分配虽然解决了隐式链接分配的致命缺点,但仍有一些问题,主要是非直接访问时间长(相对于CPU来说内存访问还是慢),所以出现了索引分配。索引分配和显式链接分配唯一类似之处在于它有索引表(相对于FAT),但是索引表中数据并不是链接存放,而是顺序存放,也就是说在索引表中可以进行直接访问。而在物理块中,则是任意存放,条件是必须存索引于索引表。索引表一般存放于磁盘(与FAT不同)但在使用时可以先调入内存,进程需要查找文件时,提供的不是文件物理块地址,而是索引表中的索引地址,这个与显式链接分配也不同。


总的来说,显式链接分配是将地址链接集中在内存中的FAT表中,FAT表中是链接寻找;索引分配是将地址位置存放在索引表中,索引表中是直接寻找,简单的说索引分配是连续分配和链接分配的综合。

在显示链接中,磁盘上有多少块,这个FAT表就有多少项,磁盘上的块和FAT中的项一一对应,而每项中的内容就是磁盘中对应块的下一块地址
换句话来说,就是对于显式链接来说,一个磁盘中只有一块FAT,而索引分配的话一个文件就有一个索引表。一个磁盘中含有多个文件就有多个索引表。
或者说,显式链接是面向磁盘的,把每个磁盘项对应的下一块拿出来组成一张表,而索引链接是面向文件的,把每个文件的几块的位置拿出来组成一个表。多个文件就有多个表。

猜你喜欢

转载自blog.csdn.net/weixin_42229896/article/details/80692997