索引在我们的生活中无处不在,举个例子:就像你刚进入某个学校时,对这个学校不熟悉,那么你就会在你的脑海中形成一张索引表,这样的话,下一次你要去这个学校的某一个地方时,你就会在脑海中索引这个地方,那么你就可以去访问这个地址。所以所谓索引分配就是为了便于文件的查找和管理引入的文件分配方式
索引分配解决了连续分配和链式分配中的许多问题。对于索引分配,每个文件在
文件分配表中有一个一级索引,索引包含分配给文件的每个分区入口。典型地,文件索引在物理上并不是作为文件分配表的一部分存储的,相反,文件索引保存在一个单独的块中,文件分配表中改文件的入口指向这一块。分配可以基于大小固定的块,也可以基于大小可变的块。索引分配支持顺序访问和直接访问文件,因而是最普遍的一种文件分配方式。
索引文件分配方式类似于存储管理中的分页方式。当创建一个文件时,系统会为其建立一个索引表,其中所有的盘块号设置为null。首次写入第i块时,先从空闲表块中取出一块,然后将其地址(即物理块号)写入到索引表的i项中。
索引文件既可以满足文件动态增长的要求,又可以较为方便和迅速地实现随机存取因为有关逻辑块号和物理块号的信息全都存放在一个集中的索引表中,而不是像链接文件那样分散在各个物理块中,如果要读取文件的第i块,就检索文件的索引表,从索引表的第i项找到所需的盘块号,然后启动
磁盘完成文件
I/O操作。
在很多情况下,有的文件很大,文件索引表也就较大。如果索引表的大小超过一个物理块,那么就必须像处理其他文件的存放那样决定索引表的物理存放方式,但这不利于索引表的动态增加;索引表也可以按链接方式存放,但这却增加了存放索引表的时间开销。显然文件大,其索引块太多时,这种方法是低效的。较好的解决方法是采用间接索引(多重索引),也就是在索引表所指的物理块中存放的不是文件信息,而是装有这些信息的物理块地址。