文件系统-操作系统

文件系统

文件管理

文件系统的功能

支持文件所占存储介质空间的分配/回收
支持文件相对起始数据的逻辑块定位到外存上的物理块
支持对文件访问的安全检查
支持对文件的读写访问

文件的结构

逻辑结构(文件组织):

用户看到的文件组织形式,和存储:设备无关

有结构的记录式文件:由一个以上的记录构成

无结构的流式文件:文件没有结构,由一串字符流构成

物理结构:

外存上存放形式,和存储设备特性有很大关系

文件存储器物理特性:

磁带

顺序访问设备→要求文件顺序存放于带上。

磁盘

直接(随机)访问设备→文件可顺序、链接式或随机(通过类似页表的索引结构访问)存放于设备上

文件系统重要作用(之一)

在用户逻辑文件和物理文件之间建立映射

文件存取方式

读写文件存储器上的一个物理块的方法

顺序存取:指对文件中的信息按顺序依次读写

随机存取法:

**直接存取法:允许用户随意存取文件中任意一个物理记录**

**按键存取法:根据文件中各记录的某个数据项内容来存取记录的,这种数据项称之为键**

几种常见的物理存储方式

1. 连续存储(顺序结构)

它将逻辑上连续的文件信息依次存放在编号连续的物理块上。

l优点:

存储方式简单。

对文件记录进行批量存取时,其存取效率较高。

支持定长记录的直接存取,可以通过计算获得存储位置。

l缺点:

不支持随机查找。如果要随机地查找或修改单个记录,此时系统需要逐个地查找诸记录,性能较差,尤其是当文件较大时情况将更为严重。

存在外部碎片。

不便于记录的增加或删除操作。

  1. 链接结构

    将逻辑上连续的文件信息存放在不连续的物理块上,每个物理块设有一个指针指向下一个物理块。

    l优点:

    提高了磁盘空间利用率,不存在外部碎片问题。

    有利于文件插入和删除,及其动态扩充。

    l缺点:

    仍然不支持随机查找。

    由于存储空间可能不连续,带来更多的寻道次数和寻道时间。

    需要牺牲一些空间存放链接指针,同时需要维护这些指针,增加了系统开销。

    可靠性问题,如指针出错。

  2. 索引结构
    将逻辑上连续的文件信息(记录)存放在不连续的物理块中,系统为每个文件建立一个专用数据结构——索引表,索引表中存放文件的逻辑块号和物理块号的对应关系

    1. 优点:
      既能顺序存取,又能直接存取。
      满足了文件动态增长、插入删除的要求。
      没有外碎片,外存空间利用率较高。
      缺点
      较多的寻道次数和寻道时间。
      索引表本身需要存储空间,同时对索引表的维护会增加系统开销。
    2. 索引表组织方式
      1. 链接文件方式:将多个索引表块按链接文件的方式串联起来
      2. 多重索引方式:将一个大文件的所有索引表(二级索引)的地址放在另一个索引表(一级索引)中。
        1. 多重索引优势
          1. 寻址空间较大,相比于链接文件,会大大减少读取对应物理块所需要的读盘次数(因为要从文件中读取索引项)

文件的目录

OS观点:文件包含文件控制块和文件体

文件控制块(FCB)的主要内容:

  • 文件名
    创建者
    文件物理位置信息:如索引表
    创建、修改时间、保存时间
    口令:用于对文件访问进行验证
    操作限制:如读、写、执行权限说明

文件目录提供的功能:

  • 实现“按名存取”。用户只须提供文件名,即可对文件进行存取。这是文件系统向用户提供的最基本的服务。
    提高对目录的检索速度。合理地组织目录结构,加快对目录的检索速度,从而加快对文件的存取速度。这是在设计一个大、中型文件系统时,所追求的主要目标。
    实现文件共享。在多用户系统中,应允许多个用户共享一个文件,以节省大量的存储空间并方便用户。
    解决文件重名问题。系统应允许不同用户对不同文件采用相同的名字,以便于用户按照自己的习惯命名和使用文件。

文件目录结构

l一级目录结构
  • 为外存上的全部文件设立一张平面(flat)的目录表,包含所有文件的FCB。每建立一个新文件即在目录中增加一个FCB,每当删除一个文件即抹去对应的FCB,当要访问一个文件时,先按文件名在目录中找到对应的文件FCB。
    为了快速查找到文件FCB,可按文件名进行Hash,或其它快速查找方式
  • 优点:简单
    缺点:
    1、查找速度慢
    2、不允许重名
    3、不便于实现文件共享
l二级目录结构
  • 设一个主目录MFD,为系统的每个用户设用户目录UFD,用户目录是用户所有文件FCB的集合,主目录中存放每个用户目录的用户目录名和UFD的索引表等(当我们把UFD看作是一个文件时,这个文件的内容是用户所有文件FCB集合,MFD中则包含每个UFD文件的FCB
  • 路径名
    将用户名与文件名连到一起组成路径名。例如:/songhong/test.c
多级目录——树形目录结构
  • 树状的多级目录结构
    任何一级目录中的FCB既可以描述次一级的子目录,又可以描述一个文件

  • 特点:

    • 利于文件分类,从文件路径名可看出文件类别。
      查找文件FCB耗费时间,要得到文件FCB,必须从根查起。
      唯一确定文件的路径名太长,故引入当前目录 概念,提供相对于当前目录的相对路径名可加速文件FCB的查找,进程控制块存有当前目录信息

  • 访问

  • 必须指出文件所在路径名:从根目录到该文件的路径上各级目录名的组合。也称为文件全名。
    例如:/usr/lib/man
    相对路径:设置一个“当前目录”(也叫“工作目录”),此时对于文件的查找是从当前目录中进行的。可以带来两点好处:
    用户使用更加方便
    检索效率更高

  • 优缺点

    l树形多级目录结构的优点

    提高了检索目录的速度。

    较好地解决了重名问题。

    l缺点

    不便于用户共享文件

无环图目录结构
当一个文件副本可以同时属于两个不同目录(类别)时,即同一个文件有二条路径名,或多条路径名时出现无环图目录结构。
特点:

方便文件共享,分类。
两个或多个FCB的一致性难保证,因此将FCB独立存放,引入带文件/目录名和FCB指针的目录项

image-20211130092527762

文件共享

    1. 指向同一个索引结点
  1. 符号链接

    1. 建立符号链文件,该文件内容为要访问文件的路径名

文件存储器空间布局与管理

空闲区表

image-20211203133204515

位示图

image-20211203133252860

image-20211203133418295

空闲块链

image-20211203134255752

image-20211203135715385

image-20211203140034820

文件系统-操作系统

http://nmhn.github.io/2021-12-07.html

Author

YSH

Posted on

2021-12-07

Updated on

2022-10-12

Licensed under