目录的概念
FCB 的有序集合称为文件目录,一个 FCB 就是一个文件目录项。目录管理要实现“按名存取”
目录结构
单级目录结构
整个文件系统只有一张目录表,每个文件占一个目录项。
缺点:
- 查找速度慢
- 文件不允许重名
- 不便于文件共享
- 不适用于多用户操作系统
两级目录结构
将文件目录分成主文件目录和用户文件目录两级。
优点:
- 提高了检索速度
- 解决了多用户之间的重名问题
- 可以实现访问限制
缺点:不够灵活,不能对文件分类
树形目录结构
大多数操作系统如 UNIX、Linux 和 Windows 使用的目录结构。
根目录为”/” 当前目录(工作目录)用”.”表示
优点:
- 文件分类方便,结构层次清晰,方便管理和保护
- 容易实现存取控制
缺点:查找文件需要按路径逐级访问中间节点,增加了磁盘访问次数,影响查询速度
无环图目录结构
这种结构允许目录共享子目录或文件,同一个文件或子目录可以出现在多个目录中。
每个共享节点设置一个共享计数器。某用户提出删除节点时,计数器减 1,删除用户的共享链。当计数器为 0 时才真正删除该节点。
目录的操作
- 搜索
- 创建文件
- 删除文件
- 创建目录
- 删除目录。有两种方式:不删除非空目录;删除非空目录。
- 移动目录
- 显示目录
- 修改目录
目录实现
目录结构
线性列表
使用文件名和指针的线性链表。查找比较费时。
哈希表
哈希表根据文件名得到一个值,并返回一个指向线性列表中元素的指针。优点是查找非常迅速,插入和删除也比较简单,但是需要一些措施来避免“冲突”。
目录查询
将当前使用的文件目录复制到内存,再内存中进行各种操作,可以减少 I/O 次数,提高系统速度。