• 操作系统知识点总结——第四章文件管理


    一、文件系统基础

    (一)基本概念

    1. 文件的属性
      文件名:由用户决定,同一目录下不允许有重名文件。
      标识符:一个系统内的各文件标识符唯一,用于区分各个文件。
      类型:指明文件的类型
      位置:文件的存放路径(文件可见)、在外存中的地址(操作系统可见,用户不可见)
      大小:指明文件大小
      保护信息:对文件进行保护的访问控制信息
      创建时间、上次修改时间、文件所有者信息
    2. 文件的逻辑结构
      有结构文件(记录式文件)、无结构文件(流式文件)
      在这里插入图片描述
    3. 文件的基本操作
      创建文件:create系统调用
      读文件:read系统调用
      写文件:write系统调用
      删除文件:delete系统调用
      在这里插入图片描述
      多个基本功能组合就能完成复制等复杂的功能。
    4. 文件的物理结构
      操作系统以块为单位为为文件分配存储空间。当文件大时文件连续或者离散占用多个磁盘块。
      在这里插入图片描述
    5. 其他需要实现的功能
      文件共享:使多个用户可以共享使用一个文件
      文件保护:如何保证不同的用户对文件有不同的操作权限

    小节回顾
    在这里插入图片描述

    (二)文件的逻辑结构

    指用户看来文件内部的数据应该使如何组织起来的。
    无结构文件:文件内部的数据就是一系列二进制流或字符流组成。又称“流式文件”。如txt文件。
    有结构文件:由一组相似的记录组成,又称“记录式文件”。每条记录又若干个数据项组成。如:数据库表文件。一般来说,每条记录有一个数据项可作为关键字。根据各条记录的长度(占用的存储空间)是否相等,又可分为定长记录可变长记录两种。

    有结构文件

    1. 顺序文件
      文件中的记录一个接一个地顺序排序(逻辑上),记录可以是定长的或可变长的。各个记录在物理上可以顺序存储或链式存储。
      在这里插入图片描述
      ⭐一般来说,考题中所说的“顺序文件”指的是物理上顺序存储的顺序文件⭐
      ⭐顺序文件的缺点使增加/删除一个记录比较困难⭐
    2. 索引文件
      每个文件建立索引表,以加快文件检索速度。每条记录对应一个索引项。
      索引表本身使定长记录的顺序文件
      在这里插入图片描述
    3. 索引顺序文件
      就是套娃
      索引顺序文件是索引文件和顺序文件思想的结合。索引顺序文件中,同样会为文件建立一张索引表,但不同的是:并不是每个记录对应一个索引表项,而是一组记录对应一个索引表项
      在这里插入图片描述

    小节回顾
    在这里插入图片描述

    (三)⭐文件目录⭐

    文件控制块
    FCB的有序集合称为“文件目录”,一个FCB就是一个文件目录项。
    FCB中包含了文件的基本信息,最重要最基本的是文件名、文件存放的物理地址

    目录结构

    1. 单级目录结构
      早期操作系统并不支持多级目录,整个系统中之间里一张目录表,每个文件占一个目录项。
      在这里插入图片描述
      单级目录结构实现了“按名存取”,但是不允许文件重名,单级目录结构不适用于多用户操作系统。
    2. 两级目录结构
      早期的多用户操作系统,采用两级目录结构。分为主文件目录和用户文件目录
      在这里插入图片描述
      允许不同用户的文件重名,但是缺乏灵活性,用户不能对自己的文件进行分类,就是不能创建文件夹。
    3. 多级目录结构(树形目录结构)
      在这里插入图片描述
      用户(或用户进程)要访问某个文件时要用文件路径标识文件,文件路径名是各字符串。各级目录之间用“/”隔开。从根目录出发的路径称为绝对路径
      树形目录结构可以很方便地对文件进行分类,层次结构清晰,也能够更有效地进行文件的管理和保护但是,树形结构不便于实现文件的共享
    4. 无环图目录结构
      可以用不同的文件名指向同一个文件,甚至可以指向同一个目录(共享同一目录下的所有内容)
      在这里插入图片描述
      需要为每个共享结点设置一个共享计数器,用于记录此时有多少个地方在共享该结点。用户提出删除结点的请求时,只是删除该用户的FCB、并使共享计数器减1,并不会直接删除共享结点。只有共享计数器减为0时,才删除结点。
      ⭐注意⭐:共享文件不同于复制文件。在共享文件中,由于各用户指向的是同一个文件,因此只要其中一个用户修改了文件数据,那么所有用户都可以看到文件数据的变化。

    索引节点
    在这里插入图片描述
    当找到文件名对应的目录项时,才需要将索引结点调入内存,索引结点中记录了文件的各种信息,包括文件在外存中的存放位置,根据“存放位置”即可找到文件。
    放在外存中的索引结点称为“磁盘索引结点”,当索引结点放入内存后称为“内存索引结点”。
    相比之下内存索引结点中需要增加一些信息,比如:文件是否被修改、此时有几个进程正在改问该文件等。

    小节回顾
    **加粗样式**

    (四)文件的物理结构

    磁盘中存储单元也会被分为一个个“磁盘块”,而磁盘块会分成与内存页面大小相等的页面。
    在外存管理中,为了方便对文件数据管理,文件的逻辑地址空间也被分为了一个一个的文件“块”
    文件的逻辑地址可以表示为(逻辑块号,块内地址)的形式

    连续分配

    要求每个文件在磁盘上占有一组连续的块
    在这里插入图片描述
    目录表中应当由**“起始块号”与“长度”字段。用户给出要访问的逻辑块号,则物理块号=起始块号+逻辑块号**。
    在这里插入图片描述
    优点
    1、连续分配方式支持随机访问和顺序访问。
    2、连续分配的文件在读写时速度最快。
    缺点
    1、物理上采用连续分配的文件拓展不方便
    2、物理上采用连续分配,存储空间利用率低,会产生难以利用的磁盘碎片。可以采用紧凑方式处理磁盘碎片。

    链接分配

    ⭐若题目中未指明是什么链接,则一律以隐式链接为准。⭐
    1、隐式链接
    在这里插入图片描述
    缺点:只支持顺序访问,不支持随机访问,查找效率低。
    优点:很方便文件拓展,不会有碎片问题,外存利用率高
    2、显示链接
    用于链接文件各物理块的指针显式地存放在一张表中。即文件分配表FAT
    在这里插入图片描述
    :一个磁盘仅设置一张FAT。开机时,将FAT读入内存,并常驻内存。FAT各个表项在物理上连续存储,每个表项长度相同,所以物理块号可以隐含。
    优点很方便文件拓展,不会有碎片问题,外存利用率高,并且支持随机访问。相比于隐式链接来说,地址转换时不需要访问磁盘,因此文件的访问效率更高。
    缺点:文件分配表的需要占用一定的存储空间。

    ⭐索引分配⭐

    索引分配允许文件离散地分配在各个磁盘块中,系统会为每个文件建立一张索引表索引表中记录了文件的各个逻辑块对应的物理块(索引表的功能类似于内存管理中的页表――建立逻辑页面到物理页之间的映射关系)。索引表存放的磁盘块称为索引块。文件数据存放的磁盘块称为数据块

    在这里插入图片描述

    • 链接方案:如果索引表太大,一个索引块装不下,那么可以将多个索引块链接起来存放。
    • 多层索引:建立多层索引(原理类似于多级页表)。使第一层索引块指向第二层索引块。这可根据文件大小的要求再建立第三层、第四层索引块。
      ⭐若采用多层索引,则各层索引表大小不能超过一个磁盘块⭐
    • ⭐混合索引⭐:多种索引分配方式的结合。例如,一个文件的顶级索引表中,既包含直接地址索引(直接指向数据块),又包含一级间接索引(指向单层索引表)、还包含两级间接索引(指向两层索引表)
      在这里插入图片描述
      优点:对于小文件来说,访问一个数据块所需的读磁盘次数更少。

    ⭐⭐超级超级超级重要考点⭐⭐
    ①要会根据多层索引、混合索引的结构计算出文件的最大长度(Key:各级索引表最大不能超过一个块)
    ②要能自己分析访问某个数据块所需要的读磁盘次数(Key:FCB中会存有指向顶级索引块的指针,因此可以根据FCB读入顶级索引块。每次读入下一级的索引块都需要一次读磁盘操作。另外,要注意题目条件——顶级索引块是否已调入内存)

    小节回顾

    在这里插入图片描述

    (五)文件存储空间管理

    存储空间的划分与初始化
    在这里插入图片描述

    空闲表法

    记录每一个空闲区间的起始块号和区间大小(空闲盘块数)
    在这里插入图片描述
    与内存管理中的动态分区分配类似,可以采用首次适应、最佳适应、最坏适应等算法来决定要为文件分配哪个区间。
    在回收时也与内存管理类似,进行表项的合并

    空闲链表法

    空闲盘块链:以单个空闲块为单位
    空闲盘区链:以连续的空闲盘区为单位。
    在这里插入图片描述
    空闲盘块链
    在这里插入图片描述
    空闲盘区链
    在这里插入图片描述

    位示图法⭐

    连续分配与离散分配都适用。
    在这里插入图片描述
    ⭐⭐重要:要能自己推出盘块号与(字号,位号)相互转换的公式⭐⭐

    ⭐成组链接法⭐

    在这里插入图片描述
    第一个为超级块,标明了下一组空闲盘块数和空闲块号。当第一个盘块号为-1时标明已经没有分组了,下一组无分组。
    回收与分配都要讲超级块当成链头来看待,进行回收与分配。

    小节回顾

    在这里插入图片描述

    (六)文件共享

    操作系统为用户提供文件共享功能,可以让多个用户共享地使用同一个文件。(系统中只有一份数据,一个用户修改其他用户也看得到修改

    1. 基于索引节点的共享方式(硬链接)
      让不同用户的目录项指向同一个索引节点。
      删除一个文件只是删除了对应用户的目录项,并且索引节点-1。当索引节点数量等于0时文件才进行删除。
      在这里插入图片描述
    2. 基于符号链的共享方式(软链接)
      在这里插入图片描述
      linux系统的.lnk文件

    小节回顾
    在这里插入图片描述

    (七)文件保护

    保护文件数据的安全

    1. 口令保护
      为文件设置口令,当用户请求访问该文件的时候必须给出相应口令,操作系统会根据输入口令和FCB中的口令进行比较,相同才可以访问。
      优点:保存口令的空间开销不多,验证口令的时间开销也很小
      缺点:正确的“口令”存放在系统内部,不够安全。
    2. 加密保护
      使用某个密码对文件进行加密,访问文件时需要提供正确的密码才能进行正确的访问。
      优点:保密性强,不需要在系统中存储“密码”
      缺点:编码/译码,或者说加密/解密要花费一定时间。
    3. 访问控制
      在每个文件的FCB中增加一个访问控制列表,该表中记录了各个用户可以对该文件执行哪些操作。
      在这里插入图片描述
      精简访问列表,就是windows的用户组方式,将用户分别放入各个组中,然后通过组来进行分配访问权限,文件这一个章节要是自己尝试写一个文件管理系统,会理解的很快。

    小节回顾
    在这里插入图片描述

    二、文件系统

    (一)文件系统的层次结构(408不考)

    在这里插入图片描述

    (二)文件系统的全局结构(新考点)

    磁盘分区

    1. 磁盘刚出场还没有分区。
    2. 首先先进性物理格式化。
      物理格式化,即低级格式化——划分扇区,检测坏扇区,并用备用扇区替换坏扇区。
    3. 进行逻辑格式化
      逻辑格式化后,磁盘分区(分卷),完成各分区的文件系统初始化。
      在这里插入图片描述

    open系统调用打开文件
    在这里插入图片描述
    近期访问过的目录项都会放入目录缓存中。

    (三)虚拟文件系统&文件系统挂载(新考点)

    虚拟文件系统
    在这里插入图片描述
    ①向上层用户进程提供统一标准的系统调用接口,屏蔽底层具体文件系统的实现差异
    ②VFS要求下层的文件系统必须实现某些规定的函数功能,如:open/read/write。一个新的文件系统想要在某操作系统上被使用,就必须满足该操作系统VFS的要求
    ③每打开一个文件,VFS就在主存中新建一个vnode,用统一的数据结构表示文件,无论该文件存储在哪个文件系统。

    文件系统挂载
    即文件系统安装/装载——如何将一个系统挂载到操作系统中。
    ①在VFS中注册新挂载的文件系统。内存中的挂载表( mount table)包含每个文件系统的相关信息,包括文件系统类型、容量大小等。
    ②新挂载的文件系统,要向VFS提供一个函数地址列表
    ③将新文件系统加到挂载点(mount point) ,也就是将新文件系统挂载在某个父目录下

    由于我的书是王道2022,跟这2023的有偏差,所以这里会有一些缺。但也问题不大。

  • 相关阅读:
    四维轻云地理空间数据协作管理平台的使用流程介绍
    springMvc59-图片上传
    鸿蒙原生应用元服务-访问控制(权限)开发应用权限列表一
    MongoDB(4.0.9)数据从win迁移到linux
    【计算机理论基础】
    c盘满了怎么迁移软件到其他盘,c盘变红了文件怎么迁移
    总结一些 spark 处理小trick
    数据中台项目前期总结
    鸿蒙全量源代码在线阅读
    LCR 052.递增顺序搜索树
  • 原文地址:https://blog.csdn.net/weixin_44546342/article/details/126805160