一、索引文件结构概论
索引文件结构的扩展机制能够极大扩充现有容量,是操作系统中比较特殊的文件结构。
一般的索引文件结构由 13 个结点组成,其中 0 - 9 个结点为直接的物理盘块(直接索引),第 10 个结点是一级间接索引,第 11 个结点是二级间接索引,第 12 个结点是三级间接索引,如下图所示。
13 个索引结点编号从 0 开始,一直编号到 12,如上图所示,这个需要注意。
二、索引的扩展原理
如果一个存储结构不使用索引,那么他的存量就是 物理块数 * 单位大小。
如果每个物理块的单位大小为 4K,则总空间为 52K,如下图所示。
如果引入了一级间接索引,索引指向了具体的物理块号,如下图所示。
如果一个地址占用 4 个字节,一个物理盘块有 4KB 容量,那么在第 10 个物理块中就可以存放 1024 份地址,那么 10 号物理块就可以存储 1024 份容量,就是 1024 X 4KB = 4MB 的容量。
如果引入了二级间接索引,索引指向了中间索引,中间索引在指向具体的物理块号,如下图所示。
如果一个地址占用 4 个字节,一个物理盘块有 4KB 容量,那么在第 11 个物理块中就可以存放 1024 份地址,每份子地址可以再存储 1024 份二级地址,那么 11 号物理块就可以存储 1024 * 1024 份容量,就是 1024 X 1024 X 4KB = 4GB 的容量。
三、真题分析
题目1-存储文件最大长度
解析
磁盘块大小为1K,每个块号占3B,那么一个物理块可放:1024/3=341个地址项,即:
一个一级索引可存放的文件大小为:3411
一个二级索引可存放文件的大小为:341×3411=116281
一个三级索引可存放文件的大小为:341×341×341*1=39651821
多级索引公式
上题中物理块是1K,就是1024B,最后求的单位也是多少K,所以不涉及单位的转换。
题目2-多级索引占用物理块号
解析
此题属于混合索引形式,索引表中既有直接索引,又有多级索引。每一个地址项指的是索引表中一行。
解题思路如下图所示
1、0-4这5个地址项存储为直接地址索引,存储在物理块0-4块上,一个地址项对应一个物理块
2、5,6地址项为一级间接地址项,磁盘索引块和磁盘数据块分别为1K,也就是1024B,每个地址项4B,一个磁盘数据块可以存储1024/4=256个地址,此时,接上面的物理块号5开始,256个地址对应的物理块号为5-260块,同理,下一个物理块号是261-516
3、再来看看剩下的一个二级间接地址:1024/4=256个地址项,每一个又分别对应256个物理块,接相面的516块,从517开始-772块,是上面256个地址项中的第一个地址项对应的物理块号。依次往下,结束的时候是多少块号呢?256×256+516=66052
分析完之后,来看上题中的问题是不是一目了然了。
题目3-综合
某系统中磁盘的每个盘块大小为1KB,外存分配方法采用中的混合索引结构,其中索引节点中直接地址6项,一级索引地址2项,二级索引地址1项,每个盘块号占用4个字节,请问该系统中允许的文件最大长度是多少?
此题是上面两个题目的结合,综合上面的讲解,来看这道题
解析
一个盘块可记录的盘块号的数量为∶1KB/4=256
直接地址∶记录6个文件所占物理块的块号
一级索引∶记录256x2=512个文件所占物理块的块号
二级索引∶记录256x256个文件所占物理块的块号
该系统中允许的文件最大长度 (256x256+256x2+6)*1KB=自己算下吧