目录
文件目录:是指由文件说明索引组成的用于文件检索的特殊文件。
对目录管理的要求如下:
文件控制块 FCB 是 OS 为管理文件而设置的数据结构,存放了管理文件所需的所有信息,即文件属性。文件控制块是文件存在的标志。
检索文件目录时,需要把若干个文件的整个 FCB 读入内存。
① 基本信息类
② 存取控制信息类
③ 使用信息类
检索文件目录时,只需要把若干个文件的文件名读入内存;找到指定文件后,再根据目录项中的节点指针,把该文件的索引节点读入内存。
① 索引节点的引入
为减少检索文件时启动磁盘的次数,应缩小文件目录的大小。
=> 将文件名和文件的描述信息分开:
② 磁盘索引节点:是指存放在磁盘上的索引节点。
主要内容包括:
③ 内存索引节点:是指存放在内存中的索引节点。
文件被打开时,将磁盘索引结点拷贝到内存索引结点中以备将来使用。
增加的主要内容:

① 整个系统中只建立一张目录表,为每个文件分配一个目录项
② 目录项中包含以下内容:
③ 创建文件
④ 删除文件
⑤ 性能分析
1)实现了按名存取; 2)查找速度慢
3)不允许重名; 4)不便于实现共享

① 将目录分为两级:主文件目录 MFD 和用户文件目录 UFD
② 创建文件:创建用户文件目录 UFD 的目录项。
③ 删除文件
④ 优缺点
假设 MFD 有 n 个目录项,UFD 有 m 个目录项,那么整个系统可以存放 n*m 个文件。采用一级目录结构时,检索目录最后一个文件需要查询 n*m 次;采用二级目录结构时,先查询 MFD 花费 n 次,再查询 UFD 花费 m 次,共需要查询 n+m 次。

树形目录:把三级或三级以上的目录结构称树形目录。
树形目录文件中的目录项,既可作为目录文件的 FCB,也能作为数据文件的 FCB,可由目录项中的属性位来表示。
① 路径名:系统中的每一个文件都有唯一的路径名。因为在树形目录结构中,从根目录到任何数据文件,都只有一条唯一的通路。
绝对路径:在该路径上从树的根目录开始,把所有目录文件名与数据文件名,依次地用 “/” 连接起来,即构成该数据文件的绝对路径。
② 当前目录:系统向用户提供一个当前正在使用的目录。
当前目录可根据需要任意改变;查找一个文件可从当前目录开始,使用部分路径名。
相对路径:在该路径上从当前目录开始,把所有目录文件名与数据文件名,依次地用 “/” 连接起来,即构成该数据文件的相对路径。
③ 增加目录项
④ 删除目录项
⑤ 优点
⑥ 缺点:查找一个文件按路径名逐层检查,由于每个文件都放在外存,多次访盘影响速度。
按名存取的实现步骤:
要么采用 FCB 的方式存储文件,要么采用索引节点的方式存储文件
查询目录有两种方法:
检索目录:/usr/ast/mbox

首先,系统读入第一个文件分量名 usr,用它与根目录文件中各目录项中的文件名顺序地进行比较。得到匹配项的索引节点是 6 号,然后访问 6 号索引节点,得到 usr 目录文件存放在 132 号盘块中,将该盘块内容读入内存。
然后,系统再读入第二个文件分量名 ast,用它与 usr 目录文件中各目录项中的文件名顺序地进行比较。得到匹配项的索引节点是 26 号,然后访问 26 号索引节点,得到 ast 目录文件存放在 496 号盘块中,将该盘块内容读入内存。
最后,系统再读入第三个文件分量名 mbox,用它与 ast 目录文件中各目录项中的文件名顺序地进行比较。得到匹配项的索引节点是 60 号,然后访问 60 号索引节点,得到 mbox 普通文件所存放的盘块号。
目录查询操作到此结束。

基本思想:建立一张 Hash 索引文件目录,利用一个易于实现的变换函数(Hash 函数),把用户提供的文件名唯一地转换为文件目录的索引值,再利用该索引值到 Hash 索引文件目录中进行查找该文件对应的索引节点。