目录的概念

FCB 的有序集合称为文件目录,一个 FCB 就是一个文件目录项。目录管理要实现“按名存取”

目录结构

单级目录结构

整个文件系统只有一张目录表,每个文件占一个目录项。

缺点:

  1. 查找速度慢
  2. 文件不允许重名
  3. 不便于文件共享
  4. 不适用于多用户操作系统

两级目录结构

将文件目录分成主文件目录用户文件目录两级。

优点:

  1. 提高了检索速度
  2. 解决了多用户之间的重名问题
  3. 可以实现访问限制

缺点:不够灵活,不能对文件分类

树形目录结构

大多数操作系统如 UNIX、Linux 和 Windows 使用的目录结构。

根目录为”/” 当前目录(工作目录)用”.”表示

优点:

  1. 文件分类方便,结构层次清晰,方便管理和保护
  2. 容易实现存取控制

缺点:查找文件需要按路径逐级访问中间节点,增加了磁盘访问次数,影响查询速度

无环图目录结构

这种结构允许目录共享子目录或文件,同一个文件或子目录可以出现在多个目录中。

每个共享节点设置一个共享计数器。某用户提出删除节点时,计数器减 1,删除用户的共享链。当计数器为 0 时才真正删除该节点。

目录的操作

  1. 搜索
  2. 创建文件
  3. 删除文件
  4. 创建目录
  5. 删除目录。有两种方式:不删除非空目录;删除非空目录。
  6. 移动目录
  7. 显示目录
  8. 修改目录

目录实现

目录结构

线性列表

使用文件名和指针的线性链表。查找比较费时。

哈希表

哈希表根据文件名得到一个值,并返回一个指向线性列表中元素的指针。优点是查找非常迅速,插入和删除也比较简单,但是需要一些措施来避免“冲突”。

目录查询

将当前使用的文件目录复制到内存,再内存中进行各种操作,可以减少 I/O 次数,提高系统速度。