操作系统基础之文件管理

本文介绍了文件系统的背景及其重要意义,包括文件的逻辑结构、物理结构、文件系统模型、文件操作等内容,并详细探讨了不同类型的文件和文件系统的管理方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文件管理

背景以及意义

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

文件以及文件系统

文件

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

文件类型

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

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

文件系统模型

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

文件操作

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

文件的逻辑结构

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

对于文件的逻辑结构,有一些基本的要求
- 能提高检索速度:在大文件中检索数据
- 便于修改:在文件中增加、删除、修改记录
- 降低文件的存储费用:减少文件占用的磁盘空间、不要求大片的连续存储空间

有结构文件

有结构文件根据用于和系统管理的需要,根据组织形式的不同,可以分为一下几种
- 顺序文件:文件中的记录按照某种顺序排列而成,记录一般是指定长的记录,能用较快的速度查找文件中的记录
- 索引文件:为变长记录建立索引表,并且为每个记录设置一个表项,用于加快检索速度
- 索引顺序文件:为文件建立索引表,为每一组记录中的第一个记录设置一个表项

顺序文件

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

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

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

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

索引文件

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

优点:检索速度快

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

索引顺序文件

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

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

外存分配方式

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

连续分配

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

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

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

链接分配

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

隐式链接

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

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

显式链接

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

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

索引分配

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

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

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

目录管理

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

文件控制块和索引节点

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

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

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

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

文件目录结构

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

文件存储空间的管理

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

空闲表法以及空闲链表法

空闲表法

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

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

空闲链表法

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

位图法

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

成组链接法

文件共享与保护

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值