第六章 文件及文件系统 6.5 目录管理

  • 文件目录由文件说明索引组成的,用于文件检索的特殊文件。
  • 文件目录也是一种数据结构,用于标识系统中的文件及其物理地址,供检索时使用
  • 对目录管理的要求如下: (1) 实现“按名存取” (2) 提高对目录的检索速度  (3) 文件共享 (4) 允许文件重名 
  • 文件目录的内容主要是文件访问的控制信息

一、 文件控制块和索引结点 

  1.文件控制块(FCB):文件控制块是操作系统为管理文件而设置的数据结构,存放了管理文件所需的所有信息。文件控制块是文件存在的标志,与文件一一对应。

  • 文件目录:文件控制块的有序集合。
  • 目录项:构成文件目录的项目(目录项就是FCB)
  • 目录文件:为了实现对文件目录的管理,通常将文件目录以文件的形式保存在外存,这个文件就叫目录文件。 

  • 基本信息类:
    • 文件名:文件标识符;
    • 物理位置:存放文件的设备名,起始盘块号,文件长度(盘块数或字节数)
    • 逻辑结构:有结构文件,无结构文件
    • 物理结构:顺序文件,链式文件,索引文件 
  • 存取控制信息类 :
    • 文件主的存取权限
    • 核准用户的存取权限
    • 一般用户的存取权限
  • 使用信息类:
    • 文件的建立日期和时间
    • 文件上一次修改的日期和时间
    • 当前使用信息(进程数、是否修改等) 

  2.索引节点

  • 为什么引入索引节点
    • 减少检索文件时启动磁盘的次数,应缩小文件目录的大小  
    •  检索文件过程中只用到了文件名
    • 文件名和文件的描述信息分开
      • 将文件的描述信息单独形成称为索引结点的数据结构,即 i 结点
      • 文件目录的每个目录项中,仅包含文件名指向该文件的i结点的指针 
  • 磁盘索引节点:指存放在磁盘上的索引结点,主要内容包括:
    • 文件主标识符
    • 文件类型:正规文件、目录文件、特殊文件
    • 文件存取权限
    • 文件物理地址:以iaddr(0)~ iaddr(12)给出文件所在的盘块号
    • 文件长度:以字节数计算
    • 文件链接计数:共享该文件的用户数
    • 文件存取时间:最近被访问或修改的时间 
  • 内存索引节点:指存放在内存的索引结点
    • 文件被打开时,将磁盘索引结点拷贝到内存索引结点中以备将来使用
    •  增加的主要内容 :索引结点编号,状态,访问计数,文件所属文件系统的逻辑设备号,链接指针

二、简单文件目录:单级,双级,层次级

  1.单级目录结构

  • 整个系统中只建立一张目录表,为每个文件分配一个目录项 

  • 实现了按名存取;查找速度慢,不允许重名,不便于实现共享 

  2.二级目录结构

  • 将目录分为两级:主文件目录(MFD), 用户文件目录(UFD)
  • 系统 MFD 中,每个用户文件目录占用一个目录项,目录项中包括用户名和指向该用户目录文件的指针
  • 为每个用户建立一个单独的用户文件目录UFD,由用户所有文件的 FCB 组成 

  • 提高了检索目录的速度;在不同的 UFD 中,可以使用相同的文件名;不同用户可以使用不同的文件名访问系统中的同一个共享文件;用户间的隔离使文件共享不方便 

  3.树形目录结构

  • 路径名:在树形目录结构中,从根目录到任何数据文件,都只有一条唯一的通路 

*A/B/C表示用户

  • 层次结构清晰,有利于文件分类;解决重名问题;提高文件检索速度;能进行存取权限的控制;查找一个文件按路径名逐层检查,每个文件都放在外存,多次访盘影响速度 

三、目录查询技术

  1.按名存取的步骤

  • 根据文件名查询文件目录,找到该文件的FCB或 i 结点
  • 根据 FCB或 i 结点中的起始盘块号,计算文件在磁盘上的物理位置
  • 启动磁盘驱动程序,将需要的文件读入内存 

  2. 查询目录方法:线性检索法,Hash 方法  

  • 线性检索法

  • Hash方法:建立一张Hash索引文件目录,利用一个 Hash函数,把用户提供的文件名唯一地转换为文件目录的索引值,再利用该索引值到Hash索引文件目录中进行查找。 
posted @   LEE_Minhyung  阅读(276)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示