文件目录

文件目录是用于标识系统中的文件及其物理地址的数据结构,供检索使用,要求实现按名存取、多用户共享一个文件、允许文件重名。

文件目录是文件控制块的有序集合,一个文件控制块就是一个文件目录项,因此文件目录又叫目录文件。

1. 文件控制块和索引节点

1.1. 文件控制块

文件控制块是用于描述和控制文件的数据结构,包含

  • 基本信息:文件名(唯一标识)、文件物理位置、文件逻辑结构、文件物理结构(指示文件是顺序文件还是索引文件)
  • 存取控制信息类:文件主的存取权限、核准用户的存取权限、一般用户的存取权限
  • 使用信息类:建立日期、上次修改日期、当前使用信息(已打开文件的进程数、文件在内存中是否被修改但尚未覆盖外存)

1.2. 索引节点

将文件名建立索引表,表项为文件名和索引节点编号,作为文件目录,将文件信息单独形成一个称为索引节点的数据结构。

磁盘索引节点

每个文件有唯一的磁盘索引节点,表项包括文件主标识符、文件类型、文件存取权限、文件物理地址、文件长度、文件连接计数(本文件系统所有指向该文件名的指针计数)、文件存取时间(本文件最近被进程存取时间、最近被修改时间和索引节点最近被修改时间)。

内存索引节点

当文件被打开时,要将磁盘索引节点拷贝到内存的索引节点中,并新增索引节点编号、状态(是否上锁或被修改)、访问计数(当前被多少进程访问)、文件属性文件系统的逻辑设备号、链接指针

2. 简单的文件目录

  • 单级文件目录:在整个系统中只建立一张目录表
  • 两级文件目录:为每个用户建立一张目录表

3. 树形结构目录

每个文件目录中只有一个根目录,每个文件和目录都只有一个父目录,数据文件称为树叶,其他目录均为树的节点。

3.1. 路径名和当前目录

路径名

在树形结构目录中,从根目录到任何数据文件都只有一条唯一的通路,在该通路上,将全部目录名与数据文件名依次用 / 连接起来,便构成了该数据文件唯一的路径名。

当前目录

为避免每次访问都需要使用从树根开始的全路径名(绝对路径),OS 为每个进程设置一个当前目录(工作目录),进程访问文件用从当前目录开始的相对路径名。

4. 目录查询技术

当用户要访问一个已存文件时,OS 将用用户提供的文件名对目录进行查询,再找该文件 FCB 或对应的索引节点,根据 FCB 或索引节点中记录的文件物理地址(盘块号),算出文件在磁盘上的物理位置,最后通过磁盘驱动程序将所需文件读入内存。

4.1. 线性检索法

单级目录,直接从文件目录中查找文件名。

树形结构目录,将一次查找文件路径名中的每一个文件(包括目录文件和数据文件),即根据文件名(包括目录文件名)在上一级目录中找到文件的索引节点,从文件的索引节点获取文件所在的盘块号,将盘快内容读入内存(即目录),逐级查找直到查找数据文件,返回数据文件的物理地址。

4.2. Hash 方法

OS 需要建立一张 Hash 索引文件目录,查找文件时,先将文件名转换为文件目录的索引值,在根据索引值到目录中查找。

5. ChangeLog

2018.09.21 初稿

results matching ""

    No results matching ""