13180 操作系统 第六章 文件系统

502 阅读25分钟

开始13180 操作系统的学习过程,献给每一位拥有梦想的"带专人",

ps:有不正确的地方麻烦更新在评论区,我会一一修复 😅

第六章 文件系统

1. 文件的存储介质

外存储设备的特点

在计算机系统中,外存储设备同内存相比较一般由以下特点

  1. 容量大
  2. 非易失
  3. 速度较慢
  4. 成本较低

外存储设备通常由驱动部分存储介质两部分组成

在有些外存储设备中,存储实体可以与驱动器分离,称为可以动的存储实体

常见的闪存,又称 Flash 盘或 U 盘,就是可以动存储实体中的一种

外存储设备的存储介质

  1. 磁带

    磁带是最早使用的磁记录存储介质,磁带是一种顺序读取设备,因为在磁带上,信息是顺序读写的

    优点:存储容量大

    缺点:虽然能保存大容量信息,但存取速度太慢不适合用于随机存取方式

  2. 磁盘

    是一种典型的随机存取设备,磁盘设备允许文件系统直接存取磁盘上的任意物理块

    一次访问磁盘的时间由寻道时间旋转定位时间信息传输时间组成

  3. 光盘

    利用在激光的作用下特性发生变化的一些材料所制成的非磁记录介质

  4. 闪存

    闪存是非易丢失存储器的一种

    闪存是一种存储技术,而 U 盘是一种使用这种技术的设备

    优点

    1. 电可擦除
    2. 可随机存取
    3. 寿命和可靠性相当高
    4. 闪存的读写比磁盘快而且方便
    5. 闪存在擦除时并不需要额外的电源

2. 文件的存取方式

  1. 顺序存取

    从前到后的次序依次访问文件的各个信息项

  2. 随机存取

    随机存取又称直接存取

    允许用户按任意次序存取文件中的任意一个记录的文件

    UNIX 类操作系统的文件系统采用了顺序存取随机存取两种方法(MS-DOS 操作系统也是)

在用户面前,文件呈现的是文件的逻辑结构,在存储介质面前,文件呈现的是文件的物理结构

3. 文件的文类

文件的分类

  1. 按文件的用途分类

    1. 系统文件

      操作系统和各种系统应用程序与数据所组成的文件,对于普通用户只允许通用 API 来使用,不允许随意读写。对于超级用户可对一些文件进行读写

    2. 库函数文件

      标准子程序以及常用应用程序组成的文件,例如 C 语言的子程序库

    3. 用户文件

      用户委托文件系统保存的文件,只有文件的所有这以及授权用户可以使用

  2. 按文件的组织形式分类(UNIX 类操作系统)

    1. 普通文件

      文件格式是文件组织中最一般的格式,包括系统文件,用户文件,库函数文件,用户实用程序文件

    2. 目录文件

      由文件的目录构成的特殊文件,通常用来检索文件

    3. 特殊文件(I/O 设备)

      以文件形式存在和访问设备,可进行查找文件等操作,对文件的读写会对应于对设备的读写,并由设备驱动程序来完成具体的读写操作

常见的文件分类方式

  1. 按文件的保护方式可划分为

    只读文件、读写文件、可执行文件、无保护文件等

  2. 按信息的流向可划分为

    输入文件、输出文件和输入输出文件等

  3. 按文件的存放时限可划分为

    临时文件、永久文件和档案文件等

  4. 按文件使用的介质类型可划分为

    磁盘文件、磁带文件、卡片文件和打印文件等

4. 文件的逻辑结构

是面向用户的文件的组织结构,是用户看到的文件的组织结构

设计原则

  1. 易于操作

    用户对文件的操作是频繁的,大量的,因此操作需要简单

  2. 查找快捷

    用户经常需要查找文件或对文件内信息进行查找

  3. 修改方便

    当用户需要对文件信息进行修改时,给定的逻辑结构应使文件系统尽可能少地变动文件中的记录或基本信息单位

  4. 空间紧凑

    使文件信息占据尽可能小的空间

逻辑结构分类

  1. 流式文件

    有序字符的集合。基本单位字符,又称为字符流文件

    源程序、目标代码等文件属于流式文件。UNIX 类系统采用的是流式文件结构

    优点:有很强的灵活性

  2. 记录式文件 定长记录文件和不定长记录文件

    是一组有序记录的集合。基本单位记录

    记录是一个具有特定意义的信息单位,它由该记录在文件中的逻辑地址(相对位置)与记录名所对应的一组键、属性及其属性值所组成,可按键进行查找(逻辑地址和记录名的一个映射)

5. 文件的物理结构

  1. 顺序结构

    又称连续结构,这是一种最简单的文件物理结构,它把逻辑上连续的文件信息依次存放在连续编号的物理块中

    一个文件的目录项中只要指出该文件占据的总块数起始块号即可

    优点

    1. 存取速度快
    2. 支持顺序存取和随机存取

    缺点

    1. 文件不能动态增长
    2. 存储碎片无法分配
  2. 链接结构

    按为每个文件构造所使用磁盘块的链表,其实就是指针

    优点

    1. 有利于文件的动态扩充
    2. 提高了磁盘空间利用率

    缺点

    1. 存取速度慢,不适于随机存取文件
    2. 磁盘的磁头移动多,效率相对较低
    3. 存在文件的可靠性问题
    4. 链接指针需要占用一定的空间
  3. 索引结构

    索引结构的文件把每个物理块的指针字集中存储在称为索引表的数据结构中

    索引表条目包含文件的逻辑块号以及所对应的物理块号

    优点

    1. 既适于顺序存取,也适用于随机存取
    2. 满足文件动态增长的要求,也满足了文件插入、删除的要求
    3. 充分利用了外存空间

    缺点

    1. 会引起较多的寻道次数和寻道时间

    2. 索引表本身增加了存储空间的开销

    3. 如果索引表采用连续结构,不利于索引表的动态增加

      如果采用链接文件结构存储索引表,会增加访问索引表的时间开销

    索引结构缺点的解决方案

    1. 索引表的链接模式:一个索引表通常就是一个物理盘块
    2. 多级索引:是上述索引表链接模式的一种改善变种,将一个大文件的所有索引表(二级索引)的地址放在另一个索引表(一级索引)中

6. UNIX 的 I 节点 计算题

UNIX 操作系统的 I 节点是一种多级索引文件结构,是多级索引结构文件在 UNIX 的具体实现

I 节点的基本思想是

给每个文件赋予一张称为 I 节点的小表,在这张小表中列出了文件属性和文件中各块在磁盘上的地址

image.png

对图分析

i 节点可记录 15 个物理块地址指针,其中前 12 个指针直接指向文件数据的物理块,称为直接盘块。而所有各级索引表则称为间接盘块

  1. 对于不超过 12 块的小文件就不需要单独的索引表,所需信息均在 I 节点中
  2. 对于稍大一些的文件,在 i 节点中有一个一级索引表,即一重间接盘块地址,这个磁盘块中含有附加的磁盘物理块地址
  3. 如果文件再变大就用二级索引表
  4. 如果还不够,那么采用三级索引表

7. 文件控制块

image.png

文件系统的一个特点是按名存取

把所有文件的文件控制块有机地组织起来,就构成了文件控制块的一个有序集合,称为文件目录

文件目录实际就是文件符号名到文件物理地址之间的一种映射机制

文件控制块是系统为管理文件而设置的一个数据结构,是文件存在的标志,它记录了系统管理文件所需要的全部信息

文件控制块(FCB)中的信息可以分成

  1. 文件存取控制信息
  2. 文件结构信息
  3. 文件管理信息

8. 文件目录和当前目录

一般把文件目录设计成一级目录结构二级目录结构多级目录结构

  1. 一级目录结构

image.png

在系统中设置一张线性目录表,表中包括了所有文件的文件控制块,每个文件控制块指向一个普通文件

一级目录结构是一种最简单、最原始的文件目录结构。

有了一级目录,文件系统就可以实现对文件空间的管理按名存取

优点:简单,容易实现

缺点:搜索效率低,文件平均检索时间长

  1. 二级目录结构

image.png

目录被分为两级

第一级称为文件主目录(MFD),给出了用户名用户子目录所在的物理位置

第二级称为用户文件目录(UFD),给出了该用户所有文件的 FCB

优点

  1. 解决了文件的重名问题
  2. 可以实现用户间的文件共享
  3. 查找时间也缩短了

缺点:增加了系统开销

  1. 多级目录结构

image.png

把二级目录的层次关系加以推广,就形成了多级目录,又称树型目录结构

多级目录结构的优点是便于文件分类

特点

  1. 层级清晰

    文件按层级管理,不同用户或文件性质可分成不同子目录,便于分配权限和保护文件。

  2. 解决了文件重名问题

    通过从根目录到目标文件的完整路径区分文件,只需保证同子目录内文件名不重复。

  3. 查找的速度快

    每次搜索只需在对应的子目录内查找,速度比一级或二级目录更快。

9. 文件目录和当前目录

文件系统向用户提供了一个当前正在使用的目录,称为当前目录,又称工作目录

有两种根据路径名检索的方法

  1. 全路径名

    需要从根目录开始,列出由根到用户指定文件的全部有关子目录,全路径名又称为绝对路径名

  2. 相对路径

    只是从当前目录开始到所要访问文件的一段路径,即当前目录作为路径的相对参照点

    这样检索路径短,检索速度高

10. 目录项和目录文件

  1. 目录项

    目录项是用于管理目录的基本数据结构,一般而言是定长的记录

    文件控制块的数据量较大,还可以采用目录项分解法来进行存储,在目录项中存储重要的信息,其余信息存储在其他数据块中

    一个目录项必定对应一个文件,FAT 文件系统中,目录项就是文件控制块

image.png

  1. 目录文件

    目录文件就是目录项的有序集合,通常可以保存到外存储设备上,每一条定长的记录就是目录项

    为了加快目录检索可以采用目录项分解法,把目录项分为两部分

    1. 符号目录项(次部)

      包含文件名以及相应的文件号

    2. 基本目录项(主部)

      包含了除文件名外文件控制块的其他全部信息

      目录项分解法的优点:减少了磁盘的访问次数,提高了文件目录的检索速度

11. FAT 文件系统

FAT 是文件分配表的缩写

采用的物理结构是链接结构

FAT 是一个简单的文件系统,最初为 DOS 操作系统设计,适用于小容量的磁盘,具有简单的目录结构

为了向后兼容,也为了方便用户升级,目前最新版本的 WIndows 仍然提供对 FAT 的支持

FAT 文件系统总共有三个版本

FAT-12FAT-16FAT-32,取决于用多少位二进制表示磁盘块地址

FAT 文件系统以为单位进行分配,所以 FAT-16 文件系统表示用 16 位(2 字节)表示簇号

12. 磁盘空间的分配回收算法

为了进行存储空间的分配与回收,在外存储设备上设置有空闲空间登记表,该表动态跟踪该外存储设备上所有还没有分配给任何文件的空闲块数目块号

  1. 位示图

image.png

基本思想:利用一串二进制位(bit)的值来反映磁盘空间的分配使用情况,每一个磁盘中物理块用一个二进制位对应

物理块空闲,二进制位为 0;物理块已分配,则二进位为 1

优点

  1. 对空间分配情况的描述能力强

  2. 位示图占用空间小,因此可以复制到内存,使查找既方便又迅速

  3. 位示图适用于各种物理结构的文件系统

  4. 空闲块表

image.png

是专门为空闲块建立的一张表,该表记录外存储器全部空闲的物理块(首个+个数)适合于文件物理结构为顺序结构的文件系统

  1. 空闲块链表

image.png

  1. 空闲块链表效率低

  2. 在空闲块链表模式中对空间申请和释放是以块为单位的

  3. 空闲块链表法节省内存,但申请空间和回收空间速度较慢,实现效率较低

  4. 空闲块成组链接法

    对链接表的一个改进方案是将 n 个空闲盘块的地址存储在第一个空闲块中

13. 实现文件系统的表目

当用户申请打开一个文件时,系统要在内存中为用户保存一些必要的信息,这些信息以表格栏目中内容的形式出现称为表目

  1. 系统打开文件表

    系统打开文件表专门用于保存已打开文件的文件控制块,通常放在内存

  2. 用户打开文件表

    每个进程都有一个用户打开文件表

    另外在进程的进程控制块 PCB 中,还记录了用户打开文件表的位置

14. 文件及目录的操作

文件系统是提供给用户使用的、用户可以进行按名存取所需要的文件

在文件系统的实现中,为用户提供使用文件的手段是文件系统的重要任务之一

  1. 典型的文件操作

    1. 建立文件

      create (文件名, 访问权限, (最大长度))

    2. 打开文件

      fd = open (文件路径名,打开方式)

    3. 读文件

      read (文件名, (文件内位置), 要读的长度, 内存目的地址)

    4. 写文件

      write (文件名, 记录键, 内存位置)

    5. 关闭文件

      close (文件名)

    6. 删除文件

      delete (文件名)

    7. 指针定位

      seek (fd, 新指针位置)

  2. 典型的目录操作(文件夹)

    对目录的操作与文件夹类似,通常由系统调用实现

    注意,在 UNIX 中,.代表当前目录,..代表根目录

    1. creat,创建目录
    2. delete,删除目录,只有当一个目录为空事,该目录方可删除
    3. opendir,打开目录,使内容可以被读取
    4. closedir,关闭目录
    5. readdir,打开目录的下一目录项 缺点:程序员必须了解和处理目录的内部结构
    6. rename,文件可换名,目录也可换名
    7. link,链接技术允许在多个目录中出现同一文件夹
    8. unlink,删除目录项

15. 文件系统的性能

磁盘高速缓存

文件系统的物理基础是磁盘设备,设计文件系统时应尽可能减少磁盘访问次数,这样,可以适当减少磁盘存储器性能对文件系统性能的影响

基本思想:系统在内存中保存一些磁盘块,这些磁盘块在逻辑上属于磁盘,内存的这一区域被称为块高速缓存

块高速缓存的内容需要定期 写回到磁盘上,以保存对磁盘块的修改

  1. 记录的成组

image.png

把若干逻辑记录合成一组并存储于一物理块的工作称记录的成组,每块中的逻辑记录个数称块因子

  1. 记录的分解

image.png

有必要考虑从一组逻辑记录中把一个逻辑记录分离出来的操作显然,从事记录的分解操作也需要使用内存缓冲区

定长记录格式,只要知道逻辑记录的长度就能够很容易地进行分解

不定长记录格式,要根据说明逻辑记录长度的控制信息,计算出用户所指定的记录在内存缓冲区中的位置,然后把记录分解出来

RAID 技术

image.png

RAID 技术主要解决

  1. 速度慢
  2. 会出现故障,可靠性较差

RAID0采用多个磁盘并行以提高读写速度

RAID1磁盘镜像的方法来提高存储的可靠性,将数据完全一致地写到两块磁盘中

RAID2作为并行单位

RAID3字节作为并行单位

RAID4作为并行单位,为提高可靠性加入了校验,校验码是独立存储

RAID5与 RAID4 相同,但是检验码为单位与数据块一起随机存储在磁盘块中

16. 文件的共享

文件共享是指一个文件可以允许多个用户同时使用

共享文件的使用有以下两种情况

  1. 文件可以同时使用

    允许多个用户同时使用同一个共享文件,但系统必须对该共享文件实施同步控制

  2. 文件不允许同时使用

    任何时刻只允许一个用户使用共享文件

三种文件的共享形式

  1. 文件被多个用户使用,由存取权限控制
  2. 文件被多个程序使用,但分别用自己的读写指针
  3. 文件被多个程序使用,但共享读写指针

17. 文件的存取控制

文件系统经常采用建立副本定时转储等方法来保护文件

  1. 建立副本

    对文件建立副本,是保护文件不受破坏的有效方法,可以把同一个文件保存到多个存储介质上,这种方法一般用于短小且极为重要的文件

  2. 定时转储

    每隔一定的时间就把文件存储到其他存储介质上,UNIX 系统就是采用定时转储的方法保护文件

  3. 规定文件的存取权限

    1. 采用树形目录结构

      凡能得到某级目录的用户就可以得到该目录所属的全部目录和文件,按目录中规定的存取权限使用目录或文件

    2. 存取控制表

      在该机制中,对于拥有权限的用户,系统应该让其进行相应的操作;

      对于超越其操作权限者,应禁止其操作

      系统同时还要防止其他用户以任何理由冒充有权限的用户对文件进行操作

18. UNIX 的文件使用权限管理方案

  1. 存取控制矩阵

    优点:概念上简单,实现起来容易

    缺点:占用太多内存空间,花费的时间开销多

    用户数目文件数目不多时,采用存取控制矩阵

  2. 二级存取控制

    在第一级,把用户按某种关系划分为若干用户组,进行对访问者的识别;

    在第二级,进行对操作权限的识别

    用户数目文件数目较多时,采用二级存取控制

    第一级中对访问者或用户进行分类识别

    1. 文件属主 (owner)
    2. 文件主的同组用户(group)
    3. 其他用户(other)

    第二级中,对文件操作权限的权限设置

    1. 读 (read) 操作 (r)
    2. 写 (write) 操作 (w)
    3. 执行 (execute) 操作 (x)
    4. 不能执行任何操作 (-)

练习

  1. 文件的存储介质不包括

    1. 磁带
    2. 磁盘
    3. 内存
    4. 闪存
  2. 把文件分为系统文件、库函数文件和用户文件的分类方式是基于文件的

    1. 组织形式
    2. 用途
    3. 保护方式
    4. 存放时限
  3. 对于顺序存取,以下几种文件物理结构中存取速度最快的是

    1. 顺序结构
    2. 链接结构
    3. 索引结构
    4. UNIX 的三级索引结构
  4. 以下文件的逻辑结构属于记录式文件的是

    1. 目录文件
    2. 可执行文件
    3. 源程序文件
    4. Excel 文件
  5. 以下不适于随机存取的物理结构是

    1. 顺序结构
    2. 链接结构
    3. 索引结构
    4. UNIX 的三级索引结构
  6. 以下关于文件存取方式的陈述中,不正确的是

    1. 文件存取为用户呈现物理结构,为存储介质呈现逻辑结构
    2. 磁盘支持随机存取,也支持顺序存取
    3. 文件的顺序存取只支持从前到后的次序依次访问
    4. 文件的随机存取可以根据命令把读写指针直接移到文件的指定目录处读写
  7. 文件目录结构类型不包括

    1. 一级目录结构
    2. 二级目录结构
    3. 三级目录结构
    4. 树型目录结构
  8. Windows 的 FAT 文件系统所采用的物理结构是

    1. 顺序结构

    2. 链接结构

    3. 索引结构

    4. 记录式结构

  9. 删除文件系统调用的一般格式为

    1. delete (文件名)
    2. write (文件名, 记录键, 内存位置)
    3. close (文件名)
    4. read (文件名, (文件内位置), 要读的长度,内存目的地址)
  10. 指针定位的一般格式为

    1. delete (文件名)
    2. seek (fd, 新指针的位置)
    3. close (文件名)
    4. write (文件名, 记录键, 内存位置)
  11. 打开文件系统调用的一般格式为

    1. fd = open (文件路径名, 打开方式)
    2. create (文件名, 访问权限, (最大长度))
    3. read (文件名, (文件内位置), 要读取的长度, 内存的目的地址)
    4. write (文件名, 记录键, 内存位置)
  12. RAID4 的并行单位是

    1. 字节
    2. 字符
  13. 用来解决磁盘速度慢,出现故障的技术是

    1. RAID技术
    2. 覆盖技术
    3. 页面调度法
    4. 页面置换法
  14. 为了防止用户越权操作文件,可以采用的策略是

    1. 文件共享
    2. 建立副本
    3. 定时转储
    4. 存取控制表
  15. 下列关于 FAT 文件系统(簇的大小为 4KB)的说法中,正确的是

    1. FAT-16 和 FAT-32 文件系统都用 16 位表示簇号
    2. 一个小文件只有 1KB,在 FAT 文件系统中只占用 1KB 的空间
    3. FAT-16文件系统的根目录在磁盘中的位置和大小是固定的
    4. FAT 文件系统中包含 2 个文件分配表且位置不固定
  16. 按文件的组织形式来划分,文件可分为普通文件、目录文件和特殊文件三种

  17. 一次访问磁盘的时间由三部分组成,分别是寻道时间、旋转定位时间和信息传输时间

  18. 允许用户按任意次序存取文件中的任意一个记录的文件存取方式称为随机存取

  19. 目录检索时,有两种根据路径名检索的方法:一种是绝对路径;另一种是相对路径,其含义是,用于检索的路径只是从当前目录开始到所要访问文件的一段路径,这样可以缩短检索路径,提高检索速度

  20. 对磁盘空闲块的管理方法通常有四种方案,分别为位示图、空闲块表、空闲块链表以及空闲块成组链接法。

  21. 当用户申请打开一个文件时,系统要在内存中为该用户保存一些必要的信息,这些信息以表格栏目中内容的形式出现,被称为表目

  22. 系统调用 readdir 可以返回打开目录的下一个目录项,也可以采用系统调用的 read 来读目录,但这个方法需要程序员了解和处理目录的内部结构

  23. 廉价冗余磁盘阵列可采用并行技术来提升磁盘数据读写速度,也可采用镜像和数据校验技术来提高磁盘可靠性。它包含多种模式,其中数据完全一致地写到两块磁盘中的模式称为RAID1

  24. 把若干个逻辑记录合成一组并存储于一物理块的工作称记录的成组,每块中的逻辑记录个数称块因子

  25. 为了保护文件,可以对用户的存取权限实施控制。当用户数目和文件数目不多时,可以采用存取控制矩阵方式,但是当文件和用户较多时,为了减少空间和时间开销,则采用二级存取控制方式

  26. 在 UNIX 系统的文件存取权限控制方案中,把用户分为文件属主、文件属主的同组用户和其他用户三类,可以对这三类用户分别设置不同的存取权限

  27. 某 UNIX 操作系统采用 I 节点管理文件的存储空间,假设磁盘块大小为 2048 字节,每个地址占 64 位(8 个字节),i 节点包括 13 个地址项,其中 10 个地址用来存直接地址,一个地址项存一次间接地址,一个地址项存二次间接地址,一个地址项存三次间接地址。请问,系统能管理的单个文件最大程度是多少?

    1. 直接地址

      直接地址共 10 个,直接地址中保存物理盘块,一个物理盘块 2KB

      10×2=20KB10 \times 2 = 20KB

    2. 一个一次间接地址

      存放一次间接地址的一级索引表可以看成是一个磁盘块,题目中给出了一个磁盘块的大小是 2KB

      每个盘块大小为 2KB,每个地址项占 8 字节,所以每个硬盘块中可以存放

      2048÷8=2562048 \div 8 = 256个盘块号,每个盘块号对应的磁盘块是 2KB

      256×2KB=512KB256 \times 2KB = 512KB

    3. 一个二次间接地址

      二次间接地址指向的磁盘块存储的是一次间接地址的列表,每个地址又指向 256 个磁盘块

      256×256×2KB256 \times 256 \times 2KB

      =65536×2KB= 65536 \times 2KB

      =131072KB= 131072KB

      =131072÷1024= 131072 \div 1024

      =128MB= 128MB

    4. 一个三次间接地址

      三次间接地址指向的磁盘块存储的是二次间接地址,二次间接地址指向的磁盘块是一次间接地址

      256×256×256×2048256 \times 256 \times 256 \times 2048

      =56636×256×2048= 56636 \times 256 \times 2048

      =1703936×2048= 1703936 \times 2048

      =3489660928÷10243= 3489660928 \div 1024^3

      =32GB=32GB

      所以一个文件的最大长度=20KB+512KB+128MB+32GB32.1GB=20KB + 512KB + 128MB + 32GB \approx 32.1GB

捏捏捏捏捏捏捏捏捏捏捏

笔者观看的课程是 B 站博主小飞学长Pro 课程,前四章是免费的如果需要看后面的建议大家去购买正版课程 😊😊

🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉