Published on

文件控制块 FCB 和 索引节点 inode

FCB 文件控制块

为了管理文件,OS 引入了FCB

FCB是用来存放控制文件需要的信息,每个文件在创建时都会对应一个 FCB

大体有以下几种属性

  struct FCB{
    // 文件名

    // 物理地址: 007号块

    // 创建、更新等时间信息

    // 文件权限

    // 文件数据块

    // 逻辑结构、 物理结构

    // ...
  };

文件目录由若干个 FCB 组成,可以想象成一个文件夹中存放了若干个文件。

通过文件名找到对应的 FCB, 获取文件元信息

inode 索引结点 (FCB 的改进)

文件目录中 实现了 文件名和 FCB 的映射,查找文件时,在目录中依此比较文件名是否匹配。 只是匹配文件名,FCB 中有很多其他信息浪费了很多空间,这时引入了 inode 索引结点,来存储文件元信息。目录中只需实现 文件名和 索引结点指针的映射关系。

  {
    fileName: 0xfff; // 索引节点指针
  }

  // 再根据指针寻找对应的 索引结点内容

假设 FCB 占 64B, 磁盘块为 1KB,一个盘块可以存放 16 个 FCB,若采用索引结点形式,文件名占 14B, 结点指针占 2B,则每个盘块可以存放 64 个索引结点,而且找到文件名对应的 结点指针后,才将索引结点调入内存。减少了启动磁盘的次数。