Skip to content

ch10 文件系统接口

10.2 内容概述

  1. 文件的概念
    • 文件是记录在外存相关信息的具有名称的集合,从用户看,文件逻辑外存的最小分配单元,即数据除非在文件中,否则不能读写到外存
    1. 文件属性:名称、标识符、类型、位置、保护(访问权限)、时间、日期等等
    2. 文件操作:创建、读、写、删除,文件内重定位,截断(删除内容保留属性)
    3. 文件类型:实现技术就是扩展名 alt text
    • 文件类型的作用?
      1. 便于让操作系统直到是否识别支持当前类型
      2. 通过文件类型确定哪种程序可以操作当前类型文件
      3. 确定文件的内部组织结构
  2. 文件访问方法
    1. 顺序访问 基于文件的磁带模型,文件信息按顺序,一个记录一个记录的处理,如编辑器和编译器
    2. 直接访问 基于文件的磁盘模型,文件由固定长度的逻辑记录构成,读写顺序没有限制,如对表文件的查询
    3. 索引访问 先搜索文件索引再直接访问文件
  3. 目录结构:文件结构实现对文件的“按名存取”
    • 文件系统需要建立一种数据结构,以实现文件名与物理位置之间的映射关系,体现这种对应关系的数据结构称之为文件目录。目录的每个叶节点保证通过文件名检索到,又包含这个文件物理位置的信息
    1. 单层目录结构:所有文件都包含在同一层目录种 alt text
      • 优点:便于理解,便于支持,搜索高效
      • 问题:命名重复问题,用户分组问题,不同用户间文件共享问题
    2. 双层目录结构:为每个用户建立独立目录,避免不同用户间命名重复的问题。第一层目录叫主文件目录(Master File Direcory,MFD),第二层叫用户文件目录(User File Direcory,UFD),Windows系列采用的就是支持扩展的双层目录结构 alt text
      • 优点:命名问题解决,搜索高效
      • 缺点:不同用户之间文件共享问题(有的系统简单地不允许本地用户文件被其他用户访问);系统文件多次备份的问题
      • 解决方案:定义一个特殊的用户包含所有的系统文件,当本地的UFD搜索不到文件时默认去特殊用户下搜索
    3. 树状结构目录:将目录结构扩展至任意高度的数,不在按照用户区分不同子目录,所以可以通过路径访问到其他用户下的文件
      • 路径又有相对路径和绝对路径之分
      1. 绝对路径:从根目录开始给出路径上的目录名直到目标文件
      2. 相对路径:从当前目录开始定义路径 alt text
      • 优点:易于管理,搜索高效
      • 缺点:多用户同一文件共享问题
    4. 无环图目录:允许目录含有共享子目录和文件,共享文件(或目录)不同于文件的复制,对于一个共享文件,只存在一个真正的文件。当多用户再一个组工作时,只需要把文件共享文件目录设为每个用户登录(UFD)下的子目录就可以完成分组共享 alt text
      • 优点:实现了文件共享
      • 问题:
        1. 同一文件拥有多个绝对路径,遍历时重复技术
        2. 删除共享文件时,会留下悬空指针(dangling pointers)
      • 解决方案:
        1. 提出符号链接(symbolic link)又称软链接概念,即指向共享目标的指针,用绝对路径名实现,通过路径名定位真的文件获得解析,与共享文件唯一真正的绝对路径获得区别。即它存的不是真正的文件节点,而是指向真正文件节点的指针,解决了共享计数的问题
        2. 引入链接概念以后,当实际文件被删除时,链接保留,当用户通过链接方式访问文件时再告知用户链接已经失效,Windows,Unix都采用此种方式
    5. 通用图目录
      • 优先考虑无环图的实现模式,遍历算法实现简单
      • 但当目录种允许存在环时,存在重复遍历问题和删除时出现因为自身引用导致引用计数器无法为0而永远无法被删除的问题 alt text
      • 解决方案:
        1. 在无限循环的遍历种设置最大遍历次数,如果超出则自动跳出
        2. 遍历两边,第一遍标记的所有的可访问到的空间,第二遍将没有访问到的空间加入空闲空间链表(自引用的孤立节点没法访问到)
  4. 文件系统的安装(Mount,挂载,这我熟)
    • 文件系统在被某些进程使用之前必须安装,具体说多个目录可以建立在多个文件系统上(卷Volumn)上,这些“子”文件系统必须使它们在这个多文件系统目录的命名空间内可以被访问到。比如U盘作为一个新的文件系统(Windows里的新加卷)必须要安装,成为本地系统的某个盘(如H盘)一样 alt text
  5. 文件保护
    • 文件的拥有者规定文件的访问权限(访问用户,访问操作)
    • Unix通过对read,write,execute三种基本操作,对owner,group,public三组用户进行授权,对应相应的3*3位二进制表示,1表示允许0表示
    • 还用写例子么?Linux都白玩了?

10.3 文件共享

  • 在多用户系统上文件分享是必要的
  • 可以通过保护方案解决文件共享问题
  • 在分布式系统上,文件共享可能要通过网络来实现
  • 网络文件系统(NFS)是一种常见的分布式文件共享方法
  1. 多用户
    • 用户ID(UID):识别用户,赋予权限和保护
    • 用户组ID(GID):允许用户成组,赋予组访问权限
  2. 远程文件系统
    • 使用网络来访问文件系统(例如FTP),自动无缝的使用分布式文件系统;通过万维网半自动实现
    • 客户端——服务端模型允许客户端挂载服务器的远程文件系统
    • 分布式信息系统(例如LDAP,DNS,NIS,Active Directory)实现了远程计算资源的统一访问
  3. 故障模式
    • 远程文件系统有故障模式:网络故障,服务器故障
    • 从故障中恢复涉及到关于每个远程请求的状态的状态信息
    • 无需状态的协议(例如NFS)囊括了每个请求的所有信息,使得恢复更简单,但是不太安全
  4. 一致性语义
    • 一致性语义明确了多用户如何同时访问一个共享文件(类似第七章所说的同步算法)

10.4 例题