操作系统-文件系统

目的

功能:用于应用程序的输入、输出,同时为用户提供访问文件、修改文件、保存文件

数据项->记录->文件

文件的基本操作

创建文件
  • 在文件系统中为文件找到空间
  • 在目录中为新文件创建条目,其中包括文件的名称、在文件系统中的位置及其他可能的信息
写文件
  • 执行系统调用,指明1)文件名称 2)写入内容
  • 文件系统搜索目录以找到文件所在位置
  • 系统为该文件维护一个写指针,当发生写操作时,更新写指针
读文件
  • 执行系统调用,指明1)文件名称 2)要读入文件的内存位置
  • 文件系统搜索目录以找到文件所在位置
  • 系统为该文件维护一个读指针,当发生读操作时,更新读指针
4)删除文件
  • 文件系统搜索目录找到该文件目录项,使之为空项
  • 回收该文件所占用的存储空间
5)截断文件
  • 允许文件所有属性不变,并删除文件内容,即将其长度设为0并释放其空间
6)文件重定位
  • 文件系统搜索目录,将文件位置设置为给定值

注:文件系统其他操作可以通过上述基本操作组合而成

文件的打开和关闭

文件的打开

很多文件操作都涉及在目录中搜索该文件条目,进而获得该文件相关信息。许多系统要求在首次使用文件时,使用系统调用open将文件相关信息从外存拷贝到打开文件表的一个表目中,并将该表目的编号(也称索引)返回给用户,当用户需要文件操作时,使用该索引

  • 第一个进程打开文件,在文件打开表中新增该文件条目(其中包含文件打开计数器),PCB添加相应表目
  • 另一个进程打开上述文件,直接在PCB中添加表目
文件的关闭
  • 当打开计数器为0时,回收分配给该文件的内存,若文件被修改,需要将文件写回外存
  • 操作系统从文件打开表中删除该文件条目
  • 释放该文件的文件控制块FCB

文件目录

FCB的有序集合

目录实现

利用路径名找到相应的目录项

  • 线性列表
1)FCB
  • 文件基本信息,如文件名称、文件物理位置、文件逻辑结构、物理结构
  • 存取控制信息,如文件存取权限
  • 使用信息,如建立时间、修改时间
2)索引结点
  • Unix将文件名和文件信息分开存储,索引结点指向文件信息存储位置
  • 一个目录项包含 1)文件名称 2)索引结点

存放在磁盘上的索引结点称为磁盘索引结点,索引结点所指存放内容包含:

  • 文件主标识符,如该文件的个人或小组的标识符
  • 文件类型,如普通文件、目录文件或特别文件
  • 文件存取权限,各类用户对该文件的存取权限
  • 文件物理地址
  • 文件长度
  • 文件链接计数
  • 文件存取时间

存放在内存中的索引结点称为内存索引结点 (文件打开时磁盘索引结点复制到内存索引结点中,以便于使用),相较于磁盘索引结点,增加以下内容:

  • 索引结点编号,用于标识内存索引结点
  • 状态,指示i结点是否上锁或被修改
  • 访问计数
  • 逻辑设备号,文件所属文件系统的逻辑设备号
  • 链接指针
3)目录结构
单目录结构
两级目录结构
多级目录结构
无环图目录结构
4)文件共享

基于索引结点(硬链接)

基于符号链接(软链接)

建立符号链接时,引用计数值直接复制;建立硬链接时,引用计数值加1

层次结构

  • 用户调用接口:提供与文件及目录相关的系统调用
  • 文件目录系统:管理用户进程的文件打开表…
  • 存取控制验证模块
  • 逻辑文件系统与文件信息缓冲区:文件的逻辑结构记录转换为文件逻辑结构内的相应块号
  • 物理文件系统:将逻辑块号转换为物理地址
  • 赋值分配模块:分配和回收辅存空间

文件存储空间管理(外存空闲空间管理)

基础知识

一个文件存储在文件卷

文件卷可以是物理盘的一部分,也可以是整个物理盘,支持超大型文件的文件卷也可由多个物理盘组成

在一个文件卷中,文件数据信息的空间(文件区)和存放文件控制信息FCB的空间(目录区)是分离的

文件卷在提供文件服务前,必须由对应的文件程序进行初始化,划分好目录区和文件区,建立空闲空间管理表格及存放逻辑卷信息的超级块

文件存储器空间管理方法

文件存储设备分为许多大小相同的物理块,并以块为单位交换信息,因此文件存储设备空间管理实质上是对空闲块的组织和管理,它包括空闲块的组织、分配与回收

1、空闲表法

与内存的动态分配类似

系统为外存上的所有空闲区建立一张空闲盘块表,所有空闲区按其起始盘块号递增的次序排列

序号第一个空闲盘块号空闲盘块数
124
293
3155
4--
2、空闲链表法

将所有空闲盘块区以链表的方式连接起来,根据构成链所用的基本元素不同,可把链表分成两种形式:空闲盘块链空闲盘区链

1)空闲盘块链

将外存上所有空闲空间以盘块为单位链接起来

当用户因创建文件而请求分配空闲空间时,系统从链首开始,依次摘下适当数目的空闲盘块分配给用户

当用户因删除文件而释放存储空间时,系统将回收的盘块依次插入空闲盘块链的末尾

2)空闲盘区链

将外存上所有空闲空间以盘区(包含若干盘块)为单位链接起来

在每个盘区上除了含有下一个空闲盘区的指针外,还包含本盘区的大小信息

分配盘区与内存的动态分配类似,一般采用首次适应算法

3、位示图法

利用二进制的一位来表示磁盘中一个盘块的使用情况,“0”表示盘块空闲,“1”表示盘块已分配

4、成组链接法

文件分配方式(为文件分配空闲磁盘空间)

基础知识

文件分配对应于文件的物理结构,是指如何为文件分配磁盘块

也即对磁盘非空闲空间的管理

文件分配方式

1、连续分配

要求每个文件在磁盘上占有一组连续的块

目录条目包括开始块的地址和该文件所分配区域的长度

1)优点

  • 实现简单
  • 访问磁盘时需要的寻道数和寻道时间最小
  • 存取速度快
  • 支持顺序访问和直接访问

2)缺点

  • 文件长度不宜动态增加
  • 反复增删文件后会产生外部碎片(与内存动态分配类似)

因而只适用于长度固定的文件

image-20210828233841196

目录如下

filestartlength
file102
file293
file3196

例题解答

2、链接分配

每个文件对应一个磁盘块的链表

包括隐式链接显式链接两种链接方式

优点:

  • 消除了外部碎片
  • 利于文件动态增长

1)隐式链接

除最后一个盘块外,每个盘块末尾都有指向下一盘块的指针

目录条目包括文件第一块的指针和最后一块的指针

image-20210829000143996

目录如下

filestartend
file1117

缺点:

  • 无法直接访问盘块
  • 当其中一个指针丢失或损坏,会造成文件数据的丢失

2)显式链接

整个磁盘中设置一张文件分配表(FAT),表项包括磁盘块序号,下一块,下一块为“-1”是文件最后一块磁盘块,“-2”是空闲磁盘块

目录条目包括文件名和起始块号

优点:

  • FAT在系统启动时就会读入内存,因此查找FAT的过程是在内存中进行的,显著提高了检索速度,降低了磁盘访问次数
  • 让链式分配支持直接访问

文件分配表如下:

盘块号下一块
0-2
1-1
23
31
100-2

目录如下:

filestart
file12

3)索引分配

把每个文件分配得到的磁盘块集中放在一起构成索引块(表)

索引表表项表示第i块对应磁盘的磁盘块号

目录条目包括索引表所在的磁盘块号

一般会将文件的索引块读入内存缓冲区,以加快文件访问速度

image-20210829001918352

目录如下:

fileindex block
file122

优点:

  • 没有外部碎片
  • 支持文件动态增长

缺点:

  • 索引块占用空间

由于每个文件都有索引块,因此索引块应尽可能小,但是索引块太小又无法支持大型文件,因此引入了多级索引机制

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值