这需要从目录结构说起。
文件目录:包含有关文件的信息,信息主要有:属性,位置,所有权。这些信息主要是由OS进行管理。
目录管理的基本要求:从用户角度看待,目录在用户(应用程序)所需要的文件名和文件之间提供一种映射。目录管理提供的是:按名存取。
共享系统中目录还需要提供控制访问文件的信息。重名问题主要通过树形结构来解决。
FCB:文件控制块。用于存放控制文件的各种信息的数据结构,实现了按名存取。
FCB的有序集合就是文件目录,一个FCB就是一个文件目录项。
这些名词辨析是这部分知识点的主要难点。
FCB包含的信息:
- 基本信息:文件名,文件的物理位置,文件的逻辑结构,文件的物理结构
- 存取控制信息:文件的存取权限等
- 使用信息:文件的建立时间,修改时间
本篇重点是这个索引结点。
检索目录文件(FCB的集合)时只用到了文件名。仅当找到一个目录项时才需要从该目录项(FCB)中读出该文件的物理地址。即:检索目录时文件的其他描述信息用不到,也因此不必调入内存。那么我们是否可以考虑,把文件名和文件的描述信息(FCB-文件名)分开,文件的描述信息单独形成一个数据结构,这个被称作索引结点。简称为i结点。
这样就可以简化目录结构为:文件名对应i结点指针。
比如在UNIX系统中,文件目录项(FCB)占16B,其中14B是文件名,2B是i结点指针。
注意到设计i结点的设计思路是怎么得到的,就很容易理解FCB和i结点包含的信息大部分是相同的,i结点只是抽出了文件名。每个文件对应一个文件名,则一个文件也只要一个i结点。
存放在磁盘上的索引结点称为磁盘索引结点。
索引结点包含的内容
通过内容可以联系与FCB的关系。
- 文件主标识符:拥有该文件的个人或者小组的标识符
- 文件类型:普通文件、目录文件、特别文件
- 文件存取权限:FCB也有。
- 文件的物理位置:每个索引结点有13个地址项,以直接或间接的方式给出数据文件所在的盘号。
- 文件长度
- 文件存取时间
- 文件被打开时,磁盘索引结点被复制到内存索引结点,以便于使用。可以联想FCB被调入内存。
内存索引结点额外含有下面的内容:
- 索引结点编号:标识内存索引结点
- 状态:指示i结点是否上锁或者被修改
- 访问计数:有一进程访问i结点,计数加1,访问结束减1
- 逻辑设备号:文件所属的文件系统的逻辑设备号
- 链接指针:设置分别指向空闲链表和散列队列的指针