目录

  • 第6章 文件管理
    • 基本概念
      • 记录式文件的结构
    • 文件存取方法
    • 文件存储的物理结构
      • 文件物理结构
        • 连续文件
        • 串联文件
        • 索引文件
      • 文件存储设备
        • 顺序存取存储设备
        • 直接存取存储设备
    • 文件存储空间管理
      • 空闲文件目录
      • 空闲块链
        • 成组链法
      • 位示图
    • 文件目录管理与存取控制
      • 基本概念
      • 文件目录
        • 单级目录
        • 二级目录
        • 多级目录
      • 文件共享
        • 绕道法
        • 链接法
          • 硬链接
          • 软链接
        • 基本文件目录表BFD
      • 目录管理
        • 基本文件目录表BFD
      • 存取控制
        • 存取控制矩阵
        • 存取控制表
        • 口令方式
        • 密码方式
    • 文件的层次结构及使用

第6章 文件管理

基本概念

  1. 文件系统必须完成的工作

    • 文件存储空间管理:在辅存上分配、回收、调整存储区

    • 逻辑文件管理:用户可见的文件逻辑结构,可实现按名存取

    • 物理文件管理:实现逻辑文件到物理文件的转换,文件在辅存上的物理结构

    • 文件目录管理:对存储设备上的文件信息可以进行查找

    • 文件共享和安全管理

  2. 文件具有两种解释

    • 文件是具有标识符的相关联字符流的集合(无结构的),常用操作系统都将文件视为这种形式

    • 文件是具有标识符的相关联记录的集合(记录是有意义的信息单位),数据库系统常使用这种形式

  3. 文件系统是操作系统中管理文件的部分,负责为用户建立、撤销、读写、修改与复制文件,完成文件的按名存取与访问控制

  4. 文件的分类(按性质和用途)

    • 系统文件:用户不能读写与修改,只能通过系统调用使用之

    • 库文件:用户可以读取和执行,但不能修改,是一些标准子程序库

    • 用户文件:用户委托系统保存的文件,所有者和被授权者才能使用

  5. 文件的分类(按组织形式)

    • 普通文件:一般格式的文件

    • 目录文件:记录着文件的目录信息,其中没有程序和数据,用于检索普通文件

    • 特殊文件:例如UNIX系统中将设备都视为特殊文件

记录式文件的结构

记录式文件中保存着一条条记录,记录是具有特定意义的信息单位。记录位于文件中的某一逻辑地址处,由与记录名对应的一组关键字、属性、属性值组成

一个记录式结构的文件中包含很多记录,这些记录一般有以下几种组织方式

  1. 连续结构

    即将记录按生成的先后顺序,连续排列,这种结构也可以用于无结构文件的组织(将每个字节视为一个记录)

    便于追加与变更,但不利于搜索

  2. 多重结构

    将“每个关键字存在于各记录中的情况”存储下来,可以使用队列来存储,下图是有m个关键字的存储例子, K 1 , K 2 , … , K m K_1,K_2,\dots,K_m K1​,K2​,…,Km​为各记录中关键字的集合, R i , R x R_i,R_x Ri​,Rx​等是各记录

  1. 转置结构

    将指向关键字相同的记录的指针连续排放,如此便于查找关键字相同的某一特定记录

  1. 顺序结构

    按某种优先级或排序规则存放各记录,例如按字典序、按时间序等构成顺序结构文件

文件存取方法

文件存取的目的是找到文件内容所在的逻辑地址,一般有三种存取方法

  1. 顺序存取

    即按文件的逻辑地址顺序存取

    在记录型文件中,按记录排列顺序存取,下一次访问的记录为当前访问记录的下一条

    在无结构字符流文件中,读写指针在存取完一段后,会自动后移/前移该段的长度

  2. 随机存取

    也称为直接存取,可以根据记录编号直接存取某记录,或是直接将读写指针移到目标位置进行存取

  3. 按关键字存取

    多用在数据库管理系统中,在存取时需要先根据关键字或记录名搜索到目标的逻辑位置,再进行存取

    此处的搜索一般分为两步进行:关键字搜索和记录搜索。关键字搜索确认该关键字在文件中的位置(找到记录队列),在搜索到目标关键字后再通过记录搜索找到特定的某条记录

    显然,上述的搜索可以使用线性搜索、散列法、二分搜索等搜索算法完成

文件存储的物理结构

总的来说,不管使用哪种存取方法,最终影响到物理存储的信息上,都遵循如下步骤

  1. 搜索到要操作对象的逻辑地址

  2. 将此逻辑地址映射到对应的物理地址

  3. 对物理地址处的有关信息进行操作

文件物理结构

文件物理结构,就是文件在存储设备上存放的物理组织方式,逻辑地址到物理地址的变换也是由文件的物理结构决定的

文件系统会将存储设备划分为若干大小相等的物理块,以便于管理

连续文件

将逻辑上连续的文件依次存放在物理块中,标记文件需要文件名、首地址、文件长度。要取得文件的中间部分时,可以直接通过起始地址与偏移量访问

在文件存放、删除的过程中,会出现一些存储碎片,即下图中文件之间的空白块,这说明连续文件结构不适合存储需要经常修改的文件

对这些碎片,可以进行整理,即把文件都往前移动,调整为按序存放

串联文件

使用非连续的物理块来存储信息,文件的每个物理块都通过指针指示下一个物理块。要取得文件的中间部分时,只能顺着指针一个个物理块往下找,搜索效率低,不适合随机存取

事实上,以串联形式组织的文件无需指出文件长度,顺着指针就可以知道文件有多长。但有时为了效率,还是会记录一下文件的长度。串联文件物理结构不会产生碎片

索引文件

要求系统为每个文件建立一张索引表,表中记录了文件所在的逻辑块号和与之对应的物理块号。采用此种方式存储的文件,可以动态增长,而且也可以较为方便地实现随机存取


文件说明信息表中,每个文件都有个索引表指针,指出该文件的索引表的存储位置。显然,当文件很大时,索引表的大小很可能会超出一个物理块,那么又需要对索引表进行组织,非常不方便。当然,可以使用二级索引解决索引文件超过一个物理块大小的问题

显然,索引文件的物理结构需要额外的存储空间存放索引表,并且至少需要访问存储器两次才能取得需要的文件信息,降低了速度

可以对这种物理结构稍作改进,每个索引项指出的不是一个物理块,而是一段物理块,指出起始地址和长度即可,也就是进行了变长分区

文件存储设备

顺序存取存储设备

磁带就是典型的顺序存取存储设备

顺序存取存储设备只有在前面的物理块被存取过后,才能存取后续物理块。一般会在相邻的两个物理块之间设计一个间隙将物理块隔开

直接存取存储设备

磁盘就是典型的直接存取存储设备

通过磁头的移动,文件系统可以直接存取磁盘上任意位置的物理块。磁盘的结构如下图所示

盘片的两面都可以存储信息,一个盘片对应一个磁头臂,每个磁头臂上都有两个磁头,可以读写盘片的上下面。一圈圈的称为“磁道”每个面会分为若干个扇区,各盘片的相同磁道构成了柱面

文件存储空间管理

即空闲块的组织和管理,包括空闲块的组织、分配与回收。下面是三种空闲块的管理方法

空闲文件目录

将空闲块视为特殊的文件,称为空闲文件,然后将这些空闲文件集中在一个目录中。事实上,这个目录中的每个表项都可以理解为一个“空闲文件”,每个空闲文件记录着一段空闲物理块的信息(包括起始块号、块数量、文件名等)

分配空闲区时,可以使用最先适应法、最优适应法、最坏适应法,从前往后扫描空闲文件目录,直到找到一个满足需求的,将信息放入对应物理块,然后修改空闲文件目录

释放空闲区时,将这段即将空出来的空闲区的首块号和块数作为空闲文件放在空闲文件目录中,之后可能会进行表项的合并

这种方法适合连续文件结构

空闲块链

将存储设备上的空闲块以链表形式组织起来。分配空闲区时,从链头开始摘取所需空闲块,再调整链首指针;释放空闲区时,将释放的空闲块插在链尾

成组链法

成组链法将每50个空闲块视为一组,在初始构建成组链时从后往前进行分组,每组的第一块用来存放前一组中(由于是从后往前进行分组的,此处的“前一组”指的当前位置后面的一组)

成组链法的具体详解请见专题

位示图

和存储管理中提到过的位示图原理思路相同。系统会从内存中划出一片区域,位示图反映每个文件存储设备的使用情况,每个文件存储设备的物理块对应位示图中的一个比特,0表示该块为空闲块,1表示该块已被分配

文件目录管理与存取控制

基本概念

  1. 文件说明/文件控制块FCB:文件名和对该文件实施控制管理的控制管理信息(包括文件类型、文件结构等)

  2. 文件体:即文件本身,可以使记录式文件或字符流式文件

  3. 目录文件:存放文件目录信息的数据结构,其中每条记录都是一个文件的说明信息。注意与文件目录的区分

文件目录

单级目录

文件系统为存储设备的所有文件建立一张目录表,每个文件的文件说明信息占一项。此目录表存在存储设备的某固定区域,需要时全部或部分调入内存

在单级目录结构中,各文件说明项处于相同的地位,搜索文件时需要搜索文件系统中全部的文件,且系统中不允许有两个名称相同的文件

二级目录

文件说明信息被组织成目录文件,并以用户为单位把各自的文件说明分为不同的组

各组的存取控制信息应放在主目录MFD的目录项中,MFD的每个表项指向一个用户文件目录UFD,每个UFD中记录着一个用户的所有文件

通过二级目录,可以解决文件重名和文件共享的问题,提高了搜索速度

从上图可见,若有多个用户需要共享某文件,只要两个用户的UFD中对应表项指示同一个物理块起始地址即可。事实上,被多个用户共享的单个文件可以以不同文件名存在于各用户的UFD中。例如上图中,Zhang的UFD中的Editor表项的文件名不一定和Wang的一样为Editor

多级目录

在多级目录中,除了最低一级(即叶子结点)中真正存了文件内容外,其他级的目录中存放的都是下一级目录或文件的说明信息,最高层则作为根目录

多级目录构成的是一个树状的结构

从上图中,我们可以发现多级目录的一些特点

  1. 层次清晰,可以根据不同用户、不同类型、不同性质将文件构成不同的子树,利于文件的管理与保护

  2. 较好解决重名问题,同一子目录下的文件名不重复就可以

  3. 查找速度更快,在确定了要查找的目标后,只需要在某个较小的子树中进行搜索,要搜索的文件数目大大减少

文件共享

绕道法

从当前目录出发,往上级目录走,直到到达与所要共享文件所在路径的交叉点,然后再向共享文件方向往下走,从而访问共享文件。绕道法需要用户指定被共享的文件和被链接的目录

链接法

直接在相应目录表之间进行链接,将一个目录中的链指针直接指向被共享文件所在的目录,显然链接法中仍然需要用户指定被共享的文件和被链接的目录

链接法往往分为硬链接软链接两种

硬链接

使得要共享同一文件的目录指向该文件的索引节点,而不是直接指向物理块。如此,对该文件的修改就可以通过索引节点被所有目录共享

上图中,目录a和目录b中关于文件Test的记录存放着指向Test索引节点的指针。在目录a或目录b中修改Test文件时,此变更都会通过索引节点真实地反映到Test所在的物理块上

软链接

使用软链接时,要共享同一文件的目录中保存的Link文件事实上存放着对应文件的路径名,通过这个路径找到这个文件真实存在的目录,直接对其进行存取

上图中,文件F8为目录D5、D6、D3所共享,虚线箭头就是软链接(即路径),当在D3或D5中要对文件F8进行存取时,就会通过此路径找到实际上处在D6下的F8

基本文件目录表BFD

这是一种目录管理的方法,通过这种方法,可以大幅提高文件搜索的速度,具体见下面目录管理中的内容

目录管理

需要指出的是,由文件说明信息或目录管理说明信息构成的目录文件也是存放在存储设备(外存)中的。根据上面存取文件时需要进行的物理块定位操作,可以发现需要多次访问外存,这会非常慢

基本文件目录表BFD

在这种方法下,将文件的FCB分为两部分,在按文件名查找文件时,只需要使用SFD,既节省内存空间又便于进行快速检索

事实上,下面所说的各个表是存在于文件系统中的,也就是需要存储在外存中的

  • 基本文件目录表BFD

    包括文件的结构信息、物理块号、存取控制、管理信息等,每一个表项都通过由系统赋予的内部标识符来唯一标识

  • 符号文件目录SFD

    每个表项只有两部分——文件名、内部标识符

事实上,常把BFD中的表项称为索引节点,即I节点

为了便于表示,上图中的BFD的表项中缺省了很多内容。可以发现,无论是MFD、SFD,还是文件本身的物理块位置,都在BFD中被指出。如此,就可以只通过一次索引,就可以找到

根据上图举个

操作系统——第6章 文件管理相关推荐

  1. (王道408考研操作系统)第四章文件管理-第一节7:文件共享

    文章目录 一:基于索引结点的共享方式(硬链接) (1)介绍 (2)Linux演示 二:基于符号链的共享方式(软链接) (1)介绍 (2)Linux演示 所谓文件共享就是指 使多个用户(进程)共享同一个 ...

  2. 操作系统第四章-文件管理

    写在前面:本文参考王道论坛的 操作系统考研复习指导单科书 文章目录 第四章 文件管理 4.1 内存管理概念 4.1.1 文件的概念 4.1.2 文件的逻辑结构 1. 无结构文件(流式文件) 2.有结构 ...

  3. 16 操作系统第四章 文件管理 文件的基本操作 文件共享 文件保护 文件系统的层次结构

    文章目录 1 文件的基本操作 1.1 创建文件 1.2 删除文件 1.3 打开文件 1.4 关闭文件 1.5 读文件 1.6 写文件 1.7 文件基本操作小结 2 文件共享 2.1 基于索引结点的共享 ...

  4. 14 操作系统第四章 文件管理 文件逻辑结构 文件目录结构

    文章目录 1 初识文件管理 1.1文件属性 1.2 文件内部的数据应该怎样组织起来? 1.3 文件之间应该怎样组织起来? 1.4 操作系统应该向上提供哪些功能? 1.5 文件应如何存放在外存? 1.6 ...

  5. (王道408考研操作系统)第四章文件管理-第一节1:文件管理初识

    注意本节只是对本章所涉及的内容简单介绍,便于入门,可以不看 文章目录 一:文件基本概念 二:文件的组织方式 (1)文件内部数据如何组织 (2)文件与文件如何组织 三:操作系统需要提供的功能 四:操作系 ...

  6. 操作系统 第四章 文件管理

    4.1 文件系统基础 所谓文件,指的是以计算机硬盘为载体的存储在计算机上的信息的集合.系统运行时,计算机以进程为基本单位进行资源的分配调度,而在用户的输入输出时则以文件为基本单位. 可以采取自底向上的 ...

  7. 15 操作系统第四章 文件管理 文件的物理结构 文件存储空间管理

    文章目录 1 文件的物理结构 (文件分配方式) 1.1 文件块.磁盘块 1.2 文件分配方式--连续分配 1.3 文件分配方式--链接分配 1.3.1 链接分配--隐式链接 1.3.2 链接分配--显 ...

  8. (王道408考研操作系统)第四章文件管理-第二节4:磁盘的管理

    文章目录 一:磁盘初始化 二:引导块 三:坏块的管理 一:磁盘初始化 一个新的磁盘只是一个含有磁性记录材料的空白盘 在磁盘能存储数据之前,它必须分成扇区以便磁盘控制器能进行读和写操作,此过程称之为低级 ...

  9. (王道408考研操作系统)第四章文件管理-第一节4:文件物理结构(文件分配方式)

    文章目录 一:连续分配 二:链接分配 A:隐式链接 B:显式链接 三:索引分配 (1)基本概念 (2)一个问题 A:链接方案 B:多层索引 C:混合索引 文件分配方式大总结 文件的物理结构是指如何为文 ...

最新文章

  1. file.getinputstream(); 要关闭吗_iOS 13.5.1 和 12.4.7 已关闭,目前不能升级或降级
  2. 天天象棋 残局闯关 第10关
  3. BZOJ 4326 NOIP2015 运输计划(树上差分+LCA+二分答案)
  4. android:paddingtop 百分比,相对层中的百分比宽度
  5. 翻车事故频发,原来是开发者漏了这一步!
  6. win11杜比视界音效怎么打开 window11开启杜比视界音效的步骤方法
  7. 为什么很多人选择前端而不选择Java?
  8. C#显示当前日期时间
  9. python随手记自动记账_简化记账——我的“随手记”
  10. 自制三层架构代码生成器软件
  11. 【x86架构】中断基础介绍
  12. 在不损坏硬盘数据情况下,MBR格式转GPT格式,手动创建EFI和MSR分区,安装WIN10/WIN8.1...
  13. [codeforces19E]Fairy
  14. 【原创】基于SpringBoot的同城生鲜门店配送系统(SpringBoot配送系统毕业设计)
  15. Spring Data Neo4j解除两个节点之间的关系
  16. vsocde vue snippet 设置
  17. 奔驰c260语言设置方法图解,奔驰C260L中控按钮图解,C260L车内按键功能说明
  18. 2023第十五届电工杯数学建模AB题思路模型
  19. mysql表disable_[MySQL优化案例]系列 -- DISABLE/ENABLE KEYS的作用
  20. 菜刀webshell特征分析

热门文章

  1. CORD助力运营商网络重构的冷思考
  2. 【新手必读】微擎nbsp;微赞等系统…
  3. the import cannot be resolved
  4. 性能测试——jmeter接口测试复习——断言——响应断言
  5. 一种油然而生的宿命感
  6. matlab libsvm svr,libsvm的SVR程序
  7. 第一次接触vc编程,顺便写一个过300英雄od附加的检测的小例子
  8. MeterSphere 之 Idea插件开发
  9. system函数与exec函数
  10. 使用Python对英雄联盟英雄数据进行聚类等分析 (字符串离散化)