软考-软件设计:操作系统-文件管理-索引文件结构 作者:马育民 • 2025-04-02 12:34 • 阅读:10005 # 提出问题 不使用 `索引文件结构` 那么文件最大大小是: ``` 物理块数 * 单位大小 ``` 如果有 **13** 个 `物理块` ,每个 `物理块` 的单位大小为 `4K`,则文件最大大小为: ``` 13 * 4K = 52K ``` 太小了 ### 解决 使用 `索引文件结构` # 索引文件结构 索引文件结构是一种用于 **文件容量扩展** 的技术,通过 `直接索引`、`一级间接索引`、`二级间接索引` 和 `三级间接索引` 实现文件大小的灵活增长 ### 作用 用于文件容量扩展 # 原理 [](https://www.malaoshi.top/upload/0/0/1GWsDdd8tWE.png) 一般的索引文件 **由 13 个节点组成**,索引从 `0` 开始 ## 直接索引 第 `0 - 9` 个结点为 **直接索引**,指向文件的 **物理块**,适用于较小的文件 #### 文件最大大小 如果 **一个物理盘块有 4KB 容量**,文件最大大小: ``` 10 * 4KB = 40KB ``` ## 一级间接索引 [](https://www.malaoshi.top/upload/0/0/1GWsEHOWGYT.png) 第 `10` 个结点是 **一级间接索引**,也是指向 **物理块**,但该 **物理块** 存 `n` 个地址,每个地址指向 **物理块**(该物理块才是文件数据) ### 计算文件最大大小 如果 **一个物理盘块有 4KB 容量**,**一个地址占用 4 字节**,文件最大大小是多少? ##### 第一步 计算 **一级间接索引** 的 **地址总数**: ``` 4KB * 1024 / 4字节 = 1024 个地址 ``` ##### 第二步 每个地址指向一个物理盘块,每个物理盘块有 `4KB` 容量,所以,文件最大大小: ``` 1024 个地址 * 4KB = 4096 KB = 4MB ``` ## 二级间接索引  第 `11` 个结点是 **二级间接索引**,有两个 **物理块** 存 **地址**,如上图: 即: - 第 `11` 个结点,指向 **物理块1**,但该 **物理块1** 存 `n` 个地址; - 每个地址指向 **物理块2**,该 **物理块2** 存 `n` 个地址; - 该地址指向的物理块才是文件数据 ### 计算文件最大大小 如果 **一个物理盘块有 4KB 容量**,**一个地址占用 4 字节**,文件最大大小是多少? ##### 分析 **二级间接索引** 有两个 **物理块** 存 **地址** ##### 第一步 计算 **二级间接索引** 的 **第一个物理盘块** 的 **地址总数**: ``` 4KB * 1024 / 4字节 = 1024 个地址 ``` ##### 第二步 计算 **二级间接索引** 的 **第二个物理盘块** 的 **地址总数**: ``` 4KB * 1024 / 4字节 = 1024 个地址 ``` ##### 第三步 计算文件最大大小: 有 **两个物理块 存地址**: - **物理块1** 存 `1024` 个地址,每个地址指向 **物理块2** - **物理块2** 存 `1024` 个地址,每个地址指向一个 **物理块**(存文件数据) 物理盘块有 `4KB` 容量,所以: ``` 1024 个地址 * 1024 个地址 * 4KB = 4,194,304 KB = 4GB ``` ## 三级间接索引 第 `12` 个结点是 **三级间接索引**,有三个 **物理块** 存 **地址**,如上图 ### 计算文件最大大小 方法同上: ``` 1024 个地址 * 1024 个地址 * 1024 个地址 * 4KB = 4096GB = 4TB ``` # 下面是另一张图 [](https://www.malaoshi.top/upload/0/0/1GWs4TI6nfT.png) 参考: https://blog.csdn.net/shujuku____/article/details/116227917 https://cloud.tencent.com/developer/article/2306914?policyId=1003 https://cloud.tencent.com/developer/article/2420805 原文出处:http://malaoshi.top/show_1GWs4UvGWga.html