操作系统基础之文件管理

作者: 颜洛滨 | 来源:发表于2017-06-29 09:59 被阅读263次

    文件管理

    背景以及意义

    在使用计算机的过程中,需要大量的程序以及数据,而内存的容量有限,并且不能长期保存数据,于是便将数据以文件的形式保存在外存中。随着而来就又出现了新的问题了,如果直接将数据保存在外存中,用户直接面向磁盘进行操作,就会带来很多的问题,比如:要求用户熟悉磁盘的结构,了解各种文件的属性,在磁盘上的具体位置,在多用户环境下还必须保持数据的安全性以及一致性,这是非常麻烦的事情,于是,就在操作系统中引入了文件管理的概念,也就是构建一个文件系统,专门用于文件的管理、组织工作,并且提供简单、方便的操作给用户。

    文件以及文件系统

    文件

    文件可以通俗地理解为就是一堆数据的集合,可以分为有结构文件以及无结构文件(流式文件),文件自身具有一些属性,如:文件类型、文件长度、文件的物理位置、建立时间等。

    文件类型

    划分文件类型的目的是为了更好地管理文件,按照不同的分类,可以将文件类型进行不同的划分

    • 按照用途划分
      • 系统文件
      • 用户文件
      • 库文件
    • 按照文件中数据的形式划分
      • 源文件
      • 目标文件
      • 可执行文件
    • 按照存取控制权限划分
      • 只执行文件
      • 只读文件
      • 读写文件
    • 按照组织形式和处理方式划分
      • 普通文件
      • 二进制文件
      • 特殊文件

    文件系统模型

    文件系统一般划分为三个层次:从上到下分别是:文件系统接口 - 对对象操作和管理的软件集合 - 对象(文件、目录、磁盘)及属性

    文件操作

    创建文件、删除文件、读文件、写文件、打开文件、关闭文件、对文件属性的操作、对目录的操作等

    文件的逻辑结构

    所谓的文件的逻辑结构,是指从用户的观点出发所看到的文件的组织形式,是用户可以直接处理的数据及结构,跟具体的物理存储结构没有关系,也称为文件的组织,分为有结构文件(记录式文件)、无结构文件(流式文件)

    对于文件的逻辑结构,有一些基本的要求

    • 能提高检索速度:在大文件中检索数据
    • 便于修改:在文件中增加、删除、修改记录
    • 降低文件的存储费用:减少文件占用的磁盘空间、不要求大片的连续存储空间

    有结构文件

    有结构文件根据用于和系统管理的需要,根据组织形式的不同,可以分为一下几种

    • 顺序文件:文件中的记录按照某种顺序排列而成,记录一般是指定长的记录,能用较快的速度查找文件中的记录
    • 索引文件:为变长记录建立索引表,并且为每个记录设置一个表项,用于加快检索速度
    • 索引顺序文件:为文件建立索引表,为每一组记录中的第一个记录设置一个表项

    顺序文件

    两种不同的排序方式:串结构(基本按照时间排序)、顺序结构(按照关键字进行排序)

    顺序文件中,如果是定长记录,则访问可以按照头指针加偏移即可;如果是不定长记录,则每个记录需要保存多一个指针,用于保存当前文件的长度

    优点:读取效率高,尤其是在大文件的情况下

    缺点:文件比较大是,查找某几个记录速度慢,增加、删除操作比较困难。可以设置一个记录日志/事务文件,将具体操作记录下来,在一定时间内统一处理(延迟操作)

    索引文件

    为文件中的记录建立索引表,每个表项用于记录:记录的长度、指向该记录的指针。检索时,先根据关键字检索索引表,然后再根据索引表中的指针读取对应的文件

    优点:检索速度快

    缺点:增加了一个索引项,所以增加了费用

    索引顺序文件

    克服了变长记录文件的不便于存取的缺点,而且付出的代价也不算大

    将顺序文件的所有记录进行分组:为顺序文件建立一张索引表,索引表中为每组的第一个记录建立一个索引项,含有该记录的键值和指向该记录的指针。在检索时,先利用关键字在索引表中进行检索,然后找到该记录所在记录组中第一个记录的表项,从而得到该记录组的地址,然后再用顺序索查找方式在主文件中进行查找,对于大文件,更是可以建立多级索引从而提高检索速度

    外存分配方式

    常见用外存分配方式有连续分配、链接分配、索引分配

    连续分配

    连续分配即为每个文件分配一组连续/相邻接的磁盘块,保证了逻辑文件中的记录顺序与存储中所占用的盘块顺序一致

    优点:顺序访问容易、访问速度快

    缺点:要求有连续的存储空间、必须事先知道文件的大小

    链接分配

    链接分配采用离散的分配方式,消除了碎片问题,提高了利用率,同时也适应文件的动态增长、删除、修改等

    隐式链接

    在文件目录的每个目录项中,都含有链接文件第一个盘块以及最后一个盘块,而且每个盘块都含有指向下一个盘块的指针

    缺点:只适合顺序访问,每次读写都必须从起始盘块开始、仅通过一个链接指针将盘块链接起来,如果其中一个链接出错,整个链就断开

    显式链接

    把链接各个物理盘块的指针,显示地存放在内存中的一个链接表(FAT File Allocation Table)上,将链首指针所对应的盘块存放在FCB中

    缺点:FAT需要占用比较大的内存空间

    索引分配

    索引分配为每个文件分配一个索引块,再把分配给该文件的所有盘块号都记录在该索引块中,在建立一个文件时,只需要为之建立的目录项中填入指向该索引块的指针

    缺点:对于小文件来说,索引块的利用率比较低

    常见分配方式:单级索引、多级索引、混合索引(多种索引分配方式混合而成)

    目录管理

    对目录的要求

    • 实现按名存取:提供名字即可快速找到文件所在磁盘
    • 提高对目录的检索速度
    • 文件共享
    • 允许文件重命名

    文件控制块和索引节点

    文件控制块中的信息

    • 基本信息:文件名、文件物理位置、文件逻辑结构、文件的物理结构
    • 存取控制信息:文件主的权限、核准用户的权限以及一般用户的权限
    • 使用信息:文件的建立时间、修改时间等

    一个文件控制块就是一个目录项,文件控制块的集合就是一个目录

    索引节点:将文件描述信息与文件名分离,使文件描述信息单独形成一个数据结构

    文件系统中每个目录项仅由文件名和指向文件所对应的inode节点的指针

    文件目录结构

    单级结构、两级结构、多级结构

    文件存储空间的管理

    用于记录磁盘空间的使用情况,便于更好地进行分配

    空闲表法以及空闲链表法

    空闲表法

    空闲表法属于连续分配,系统为外存上的所有空间建立一张空闲表,每个空闲区对应一个空闲表项

    分配时采用首次适应算法、循环首次适应算法等

    空闲链表法

    将空闲链分为:空闲盘块链、空闲盘区链

    位图法

    通过位图(二进制的一个位)来表示磁盘使用情况

    成组链接法

    文件共享与保护

    • 基于索引节点的共享方式
    • 利用符号链实现文件共享
    • 磁盘容错技术
      • 第一级容错技术
        • 双份目录和双份文件分配表
        • 热修复重定向和后读写校验
      • 第二级容错技术
        • 磁盘镜像
        • 磁盘双工
      • 基于集群技术的容错能力
        • 双机热备份模式
        • 双机互为备份模式
        • 公用磁盘模式

    相关文章

      网友评论

        本文标题:操作系统基础之文件管理

        本文链接:https://www.haomeiwen.com/subject/lqcmcxtx.html