《操作系统》课程笔记(Ch10-文件系统)

文件概念

属性

  • 文件名
  • 文件ID(唯一标记)
  • 类型
  • 位置
  • 大小
  • 保护策略(读、写、执行控制)
  • 时间、日期、用户标记

相关结构

  • 文件控制块FCB

    用于存储与文件相关的信息,与文件一一对应。通常包含文件权限、日期、所有者、大小、数据块的指针。

    《操作系统》课程笔记(Ch10-文件系统)_第1张图片

  • 文件目录

  • inode

    UNIX中,每一个文件有对应的inode,里面包含文件的信息,与FCB类似。系统内部不使用文件名,而使用inode号码来识别文件。

文件操作

  • 打开

    打开文件时,需要记录有关信息:

    • 文件指针
    • 文件的打开计数
    • 磁盘位置
    • 访问权限

    有的操作系统提供锁功能,来避免边写边读,导致值不可复现错误:

    • 共享锁:类似于读者锁,多个进程可以并发获取
    • 独占锁:类似于写者锁,一次只有一个进程可以获取
  • 关闭

  • 存取

    • 顺序访问

      从头到尾访问

    • 直接访问

      从某点切入访问

    • 借助索引访问

盘和目录结构

磁盘可以进行分区;盘或者分区可以通过RAID进行保护;包含文件系统的分区通常称为卷。

目录可以视为文件名称构成的符号表。

  • 单级目录

    最简单的目录,所有文件都在同一目录中,按名访问,文件必须有唯一的名称

  • 两级目录

    《操作系统》课程笔记(Ch10-文件系统)_第2张图片

    每个用户有自己的UFD。用户搜索文件时,只搜索自己的UFD,解决了名称碰撞。但是这种隔离性让用户之间进行合作变得困难。

  • 树形目录

    使得用户可以创建自己的子目录并相应地组织文件

    《操作系统》课程笔记(Ch10-文件系统)_第3张图片

  • 无环图目录

    不同目录可以拥有同一个文件或目录,允许用户之间共享子目录和文件

    《操作系统》课程笔记(Ch10-文件系统)_第4张图片

    虚悬指针问题:如果一个用户删除了该文件,而另一个用户不知道

    • 解决方法:可以采用引用计数方案。

      设文件F1的当前引用计数值为1,先建立F1的符号链接文件F2,再建立F1的硬链接文件F3,然后删除F1。此时,F2和F3的引用计数值分别是?

      硬链接:新文件和被链接文件指向同一个节点,引用计数值加1。当删除被链接文件时,引用计数值减1,直到引用计数值为0时,才能真正删除文件。
      软链接:又叫符号链接,新文件中只包含了被链接文件的路径名,和被链接文件指向不同的节点。建立软链接文件时,文件的引用计数值不会增加。当被链接文件删除时,新文件仍然是存在的,只是不能通过新文件访问被链接文件。因此删除软链接时,引用计数值不变化
      因此,在本题中,当建立F2时,F1和F2的引用计数值都为1。当再建立F3时,F1和F3的引用计数值就都变成了2。当后来删除F1时,F3的引用计数值为2-1=1。F2的引用计数值仍然保持不变。

  • 通用图目录

    在添加链接时,可能破坏树形结构,形成有环的图。

    • 如何避免重复搜索环?可以限制搜索访问次数。
    • 如何解决自我引用导致的引用计数不降到0问题?可采用垃圾收集方案,两次遍历文件系统,确定可回收空间,但极为耗时。

挂载

文件系统被访问前,需要先被挂载在挂载点上。

  • mount
  • unmount

文件共享

  • 在多用户系统中,可以通过用户ID和组ID进行访问权限控制
  • 在远程文件系统中,可以使用FTP、DFS(分布式文件系统)、WWW(万维网)、C/S架构
  • 支持共享的文件系统要考虑一致性语义,即如何处理多用户对文件的视图(一起变动,还是不立即可见?)

保护

文件需要进行访问权限控制。许多系统使用三种用户类型:所有者、组、其他,提供读、写、执行三种权限控制,这样共计3*3=9位控制点,每种类型3位,可用一个八进制数表示。

你可能感兴趣的:(《操作系统》课程笔记(Ch10-文件系统))