1. 索引文件结构概论

在 linux 系统中,一般的索引文件结构由 13 个结点组成,其中 0 - 9 个结点为直接的物理盘块(直接索引),第 10 个结点是一级间接索引,第 11 个结点是二级间接索引,第 12 个结点是三级间接索引,如下图所示:

索引文件结构

索引结点编号从 0 开始。文件在逻辑上一定是连续的,在物理上可以是分散的。

2. 扩展原理

如果一个存储结构不使用索引,那么他的存量就是 物理块数 * 单位大小。
如果每个物理块的单位大小为 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 的容量。
一级间接索引会访问两次索引盘和一次数据盘。

2. 练习题

一般考察点:

  • 逻辑位置(字节或页号)对应的索引方式。
  • 不同索引方式指向的对象(数据块或者索引表)。
  • 不同索引方式访问磁盘的次数。
  • 能够表示的文件长度。

习题 1:

习题1

解析:

一个索引块能存储的地址个数是:1024b / 4b = 256。
直接索引地址块是 0 ~ 4,图中的索引块的内容就是物理块的编号。
5 和 6 是一级索引,索引块 5 存放 256 个地址,图中对应的是 58 ~ 136 物理块,对应的逻辑块号应该是 5~260。
所以逻辑块 261 是在索引块 6 里存放的第一个地址,对应的物理块号是 187。
答案选 C,D。

习题 2:

习题2

一个索引块能存储的地址个数是:1024b / 4b = 256。
直接索引地址块是 0 ~ 5,也就是对应的物理块号。
一级索引地址块是 6,能存放 256 个地址,对应的逻辑块号是 6 ~ 261.
二级索引地址块是 7, 能存放 256^2 = 65536 个地址,对应的逻辑块号是 262 ~ 65797。
总文件长度是 6 + 256 + 65536 = 65798k。
答案选 A,D。

__END__