💻
Operating System
  • 操作系统
  • 第一章:操作系统概述
    • 1. 操作系统概论 & 功能
    • 2. 操作系统的四个特征
    • 3. 操作系统的发展 & 分类
    • 4. 操作系统的运行机制
    • 5. 中断 & 异常
    • 6. 系统调用
    • 7. 操作系统的体系结构
  • 第二章:进程管理
    • 1. 进程的概念 & 组成 & 特征
    • 2. 进程的状态 & 转换
    • 3. 进程控制
    • 4. 进程通信
    • 5. 线程
    • 6. 进程的调度
    • 7. 进程同步 & 互斥
    • 8. 死锁
  • 第三章:内存管理
    • 1. 内存的基础知识
    • 2. 内存空间的分配与回收
    • 3. 内存空间的扩充
    • 4. 地址转换
    • 5. 存储保护
  • 第四章:文件管理
    • 1. 文件的基本概念 & 属性
    • 2. 文件的逻辑结构
    • 3. 文件的物理结构
    • 4. 文件的目录结构
    • 5. 空闲分区管理
    • 6. 文件的基本操作
    • 7. 文件共享
    • 8. 文件保护
    • 9. 磁盘管理
Powered by GitBook
On this page
  • 1. 目录结构
  • 1.1 单级目录结构
  • 1.2 两级目录结构
  • 1.3 多级目录结构(树形目录结构)
  • 1.4 无环图目录结构
  • 2. 索引结点

Was this helpful?

  1. 第四章:文件管理

4. 文件的目录结构

Previous3. 文件的物理结构Next5. 空闲分区管理

Last updated 4 years ago

Was this helpful?

对于每一个目录,都会有一个目录表,其结构如下:

目录本身就是一个有结构的文件,由一条条记录组成。每条记录对应一个在该目录文件下的文件

目录文件中的一条记录就是一个 文件控制块(FCB),包含了基本信息(文件名、物理地址、逻辑结构、物理结构等),存取控制信息(是否可读 / 可写、禁止访问的用户名单等),使用信息(如文件的建立时间、修改时间等)

需要对目录进行的操作:

  • 搜索

  • 创建文件

  • 删除文件

  • 显示目录

  • 修改目录

1. 目录结构

1.1 单级目录结构

早期操作系统不支持多级目录,整个系统只建立一张目录表,每个文件占一个目录项

单级目录实现了 按名存取,但是不允许文件重名

在创建一个文件时,需要先检查目录表中有没有重名文件,确定不重名后才能允许建立文件,并将新文件对应的目录项插入目录表中

1.2 两级目录结构

早期的多用户操作系统,采用两级目录结构。分为主文件目录(MFD)和用户文件目录(UFD)

主文件目录下是用户目录,每个用户一个目录,每个用户目录里存放文件。每个用户目录下不允许重名,不同用户目录下运行重名

缺点:对于某一个用户来说,不能对自己的文件进行分类管理

1.3 多级目录结构(树形目录结构)

对于一个目录中,可以有目录和文件。不同目录下的文件可以重名

树形目录结构可以很方便地对文件进行分类,层次结构清晰,也能够更有效地进行文件的管理和保护。但是树形结构不便于实现文件的共享

1.4 无环图目录结构

在树形目录结构的基础上,增加了一些指向同一节点的有向边,使整个目录成为一个有向无环图。可以更加方便的实现多个用户间的文件共享

可以用不同的文件名指向同一个文件,甚至可以指向同一个目录

需要为每个共享结点设置一个共享计数器,用于记录此时有多少个地方在共享该结点。用户提出删除结点的请求时,只是删除该用户的 FCB、并使共享计数器减 1,并不会直接删除共享结点。只有共享计数器减为 0 时,才删除结点

注意:共享和复制是不同的

2. 索引结点

在查找文件的时候,仅仅使用到了文件名这个信息,但是我们却是在整个目录表中去查找的,需要把真个目录表从磁盘中读取出来。有时目录表很大,需要多个盘块存放,这样在查找的时候,就需要启动磁盘很多次,开销增大

优化思路:把除了文件名之外的文件描述信息都放到一个索引结点里,同时建立一张表,其中包含文件名,和指向索引结点的指针。查找时,只需要把这张表调出即可。由于这张表只有两个字段,很小,占用的盘块也相应减少,需要启动磁盘的次数减少,提高了检索速度