操作系统期末复习合集——第六章:文件管理

news2024/9/22 2:14:49

操作系统期末复习合集——第六章:文件管理

  • 引言
    • 6.1 文件和文件系统
      • 一、文件
        • 1. 有结构文件
        • 2. 无结构文件(流式文件)
      • 二、文件系统
        • 1. 功能
        • 2. 文件系统接口
    • 6.2 文件的逻辑结构
      • 一、文件结构
      • 二、文件逻辑结构的类型
      • 三、顺序文件
        • 1. 排序
        • 2. 读/写
        • 3. 缺点
      • 四、索引文件
        • 索引顺序文件
        • 查找速度比较
    • 6.3 外存分配方式
      • 一、外存空间分配的目标
      • 二、连续外存分配
        • 连续分配—顺序文件-1
      • 三、链接分配
        • 1. 隐式链接
        • 2. 显式链接
      • 四、索引分配
        • 1. 单级索引分配
        • 2. 两级索引分配
        • 3. 混合索引分配
        • 练习
        • 范例一
        • 范例二
    • 6.4 目录管理
      • 一、目录
      • 二、文件控制块(FCB)
      • 三、索引结点
      • 四、单级目录
      • 五、两级目录
      • 六、树型目录结构
        • 1. 树型目录结构举例
          • 从路径解析来看目录内容
          • 树状目录的完整实现
        • 2. 路径
        • 3. 当前目录
        • 4. 增加目录
        • 5. 删除目录
      • 七、目录查询技术
    • 6.5 文件存储空间的管理
      • 一、空闲表法
      • 二、空闲链表法
        • 1. 空闲盘块链表法
        • 2. 空闲盘区链表法
        • 3. 位示图法
        • 四、成组链接法
    • 6.6 文件共享和文件保护
      • 一、绕弯路文件共享方法
      • 二、基于索引结点的共享方式
      • 三、利用符号链实现文件共享
    • 6.7 磁盘容错技术
      • 一、第一级容错技术(SFT-I)
        • 1. 双份目录和双份文件分配表(FAT)
        • 2. 热修复重定向
        • 3. 写后读校验
      • 二、第二级容错技术(SFT-II)
        • 1. 磁盘镜像
        • 2. 磁盘双工
    • 6.8 数据一致性控制
      • 一、数据一致性问题
      • 二、事务
        • 1. 事务
        • 2. 事务记录
        • 3. 恢复算法
      • 三、并发控制
        • 1. 利用互斥锁实现“顺序性”
        • 2. 利用信号量机制实现“顺序性”
      • 四、磁盘块号的一致性
  • 练习

引言

操作系统对系统的软件资源(不论是应用软件和系统软件)的管理都以文件方式进行,承担这部分功能的操作系统称为文件系统。本章介绍文件的逻辑组织在文件存储器上的物理组织;实现**“按名存取”**和文件共享、保护的文件系统目录的结构和管理;文件存储空间分配和回收算法和文件系统的磁盘格式;文件系统的安全性。

6.1 文件和文件系统

一、文件

  • 文件指具有文件名的一组相关信息的集合
  • 任何具有独立意义的一组信息都可以组织成一个文件,如源程序、可执行的二进制代码程序、一批数据、一个表格或一篇文章等
  • 文件具有可保存性:便于信息的长期保存
  • 用户按名存取文件:便于用户对信息的存取,而不需要知道文件存放在磁盘的具体位置
  • 文件主要有无结构文件(流式文件)有结构文件

1. 有结构文件

  • 有结构文件由记录组成
  • 记录:是一组相关数据项的集合,用于描述一个对象某方面的属性
  • 数据项:描述一个对象的某种属性的字符集
    在这里插入图片描述

2. 无结构文件(流式文件)

  • 无结构文件也称流式文件,直接由字符(或Byte)组成
  • 流式文件可看作是记录式文件的一个特例,即只含一个无标识记录的文件
  • 流式文件便于OS管理,也便于用户灵活组织文件的内部逻辑结构
  • Unix, DOS, windows等OS都采用流式文件

二、文件系统

OS中实施文件管理的机构称为文件管理系统,简称文件系统

1. 功能

  • 实施文件存储空间的分配与回收(即磁盘管理)
  • 实现文件名到文件空间的映射
  • 提供文件共享能力以及保护与保密措施
  • 实现用户要求的各种文件操作

2. 文件系统接口

  • 命令接口:用户与文件系统之间交互的接口,如查找文件(dir/ls)等
  • 程序接口:用户程序与文件系统的接口,通过系统调用来实现,如open, read, write, close等

6.2 文件的逻辑结构

一、文件结构

  • 文件的逻辑结构:即文件组织,是用户可以直接处理的数据及其结构
  • 文件的物理结构:即文件的存储结构,是文件在外存上的存储组织形式

二、文件逻辑结构的类型

  • 有结构文件:
    • 顺序文件
    • 索引文件
    • 索引顺序文件
  • 无结构文件:
    • 流式文件

三、顺序文件

1. 排序

  • 串结构:
    各记录之间的顺序与关键字无关
  • 顺序结构:
    记录按关键字(词)排列

例子:

  • 文件、记录、数据项
    • 一个班的学生资料用一个文件表示
    • 每个学生信息对应一条记录
    • 学生的姓名、性别、出生年月等分别对应单个数据项

2. 读/写

  • 定长记录:直接定位
  • 变长记录:每个记录中有该记录长度,逐个记录顺序读/写

3. 缺点

  • 对单个记录读/写困难(特别是对变长记录)
  • 增加或删除一个记录困难

四、索引文件

  • 为可变长记录文件建立一张索引表
  • 索引表按记录键排序
  • 索引表本身构成一个定长记录的顺序文件
    在这里插入图片描述

索引顺序文件

  • 将可变长记录文件中的记录分为若干个组
  • 为每组第一个记录建立一张索引项,继而组成一个索引表
  • 索引表按记录键排序
  • 索引表本身构成一个定长记录的顺序文件
    在这里插入图片描述

查找速度比较

  • 三种文件的查找速度比较:100W条记录
  • 顺序文件:平均查找需要50W次
  • 索引文件:按索引方法查找,额外需要100W个索引的空间
  • 索引顺序文件
    • 每100条记录为1个组,共有10000个组,即有10000个组索引
    • 每100个组索引为1群,共有100个群,即有100个群索引
    • 建立二级索引表
    • 查找:群索引表—组索引表—组记录表
    • 50+50+50=150次

6.3 外存分配方式

一、外存空间分配的目标

  • 提高外存利用率
  • 提高文件的访问速率

二、连续外存分配

连续外存分配指为文件分配一组相邻接的盘块
在这里插入图片描述

  • 优点:
    • 顺序访问容易
    • 一次大批量数据的访问速度较快
  • 缺点:
    • 要求有连续的外存空间(同样存在“碎片”问题)
    • 必须事先知道文件的长度

连续分配—顺序文件-1

如假设逻辑块和盘块大小相等,则要读取文件第Ⅰ页(页从0开始计数)所在盘区块号J可通过下式计算得到: J=ADRR+I。
逻辑地址LA对应逻辑块号为 I=LA/块大小
块内位移为 d=LA mod 块大小
在这里插入图片描述
磁盘空间的连续分配
在这里插入图片描述

三、链接分配

将属于同一文件的盘块,链接在一起进行分配称链接分配

磁盘空间的连续分配
在这里插入图片描述

1. 隐式链接

将链接指针直接放在盘块数据区中
在这里插入图片描述
优点:
⑴、不存在“碎片”
⑵、不需要连续外存空间
⑶、不需要事先知道文件长度

缺点:
⑴、只适合于顺序访问,不适合随机访问(低效)
⑵、可靠性差(中间任何指针出错,整个链断开)
⑶、数据区大小不等于2的次幂(指针占用数据区空间),不利于与内存页对应

2. 显式链接

将用于链接文件各盘块的指针,显式地存放在一张链接表(文件分配表FAT)中
在这里插入图片描述
优点:
⑴、FAT占空间小,可以调入内存
⑵、查找速度快,适合随机存取
同样不存在“碎片”,不需要连续外存空间不需要事先知道文件长度

缺点:
⑴、FAT需要占用外存空间
对于1GB的硬盘,若每个盘块为512B,则有2M个盘块,每个盘块需要用21位(约3B)指示,共需要6MB外存空间
为了减少FAT占用外存的空间,分配单位可采用簇(1簇=8KB),此时,1GB硬盘需要3/8MB
⑵、FAT需要占用较大内存空间
对于大的硬盘,每次只调取部分FAT进入内存
⑶、不能高效直接存取

四、索引分配

将分配给文件的盘块号集中在一起
按顺序放入索引块中

1. 单级索引分配

每个文件先分配一个索引块
当已分配的索引块装不下所有盘块号时,再分配新的索引块

举例:
在这里插入图片描述
在这里插入图片描述
优点:
方便直接存取

缺点:
⑴、较FAT方式占用更多的外存空间(索引块装不满)
⑵、当文件较大时,单级索引分配效率仍较低

2. 两级索引分配

由文件指示的盘块(索引块)中存放的信息是下一级索引块的盘块号
在这里插入图片描述
缺点:
⑴、较FAT和单级索引分配需要更多外存空间
⑵、当文件特别大时,不能分配外存空间
⑶、当盘块大小为1KB,每个盘块号占4B时,最大文件空间为:256x256=64K盘块=64MB

优点:
对较大的文件,仍可以采用直接存取

3. 混合索引分配

将直接分配、单级索引分配、二级索引分配、三级索引分配等多种方式结合起来进行外存分配的方法
在这里插入图片描述
假设每块(簇)外存空间大小为4KB
每个盘块地址为4B(32位,4G盘块)

  • 直接地址(直接分配)
    ⑴、设置10个直接地址项,直接存放盘块号
    ⑵、直接地址最大文件为:10x4KB = 40KB

  • 一次间接地址(单级索引分配)
    ⑴、当文件大于40KB时,采用一次间接地址(即采用单级索引分配)
    ⑵、一次间接地址最大文件为:40KB + 1K(块)x4KB = 40KB + 4MB = 4.04MB

  • 二次间接地址(二级索引分配)
    ⑴、当文件大于4.04MB时,采用二次间接地址(即采用二级索引分配)
    ⑵、二次间址最大文件为:4.04MB + 1Kx1Kx4KB = 4.04MB + 4GB

  • 三次间接地址(三级索引分配)
    ⑴、当文件大于4GB时,采用三次间接地址(即采用三级索引分配)
    ⑵、三次间址最大文件为:4GB + 1Kx1Kx1Kx4KB = 4GB + 4TB

练习

在一操作系统中采用索引分配方式为文件分配外存,假定盘块大小为4KB,每个盘块号占用4个字节,请分别计算使用一级索引、二级索引、三级索引支持的文件最大长度。

解:
盘块数量:1024块

一级索引:
1024 ∗ 4 K B = 4 M B 1024*4KB=4MB 10244KB=4MB

二级索引:
1024 ∗ 1024 ∗ 4 K B = 4 G B 1024*1024*4KB=4GB 102410244KB=4GB

三级索引:
1024 ∗ 1024 ∗ 1024 ∗ 4 K B = 4 T B 1024*1024*1024*4KB=4TB 1024102410244KB=4TB

范例一

一个文件系统中有一个20MB大文件和一个20KB小文件,当分别采用连续、链接、二级索引和混合索引分配方案时(每块大小为4096B,每块地址用4B表示),问:

  1. 各文件系统管理的最大的文件是多少?
  2. 每种方案对大、小二文件各需要多少专用块来记录文件的物理地址(说明各块的用途) ?
  3. 如需要读大文件前面第5.5KB和后面(16M+5.5KB)信息,则每个方案各需要多少次盘I/O操作?

解:

  1. 各文件系统管理的最大的文件
    连续分配: 不受限制,可大到整个磁盘文件区。
    链接分配: 不受限制,可大到整个磁盘文件区。
    二级索引分配: 由于盘块大小为4KB,每个地址用4B表示,一个盘块可存1K个索引表目,二级索引可管理的最大文件容量为4KB×1K×1K=4GB,如要管理更大的文件需采用三索引,它可管理4TB大小文件。
    混合索引分配: 可管理的最大文件为40KB+4MB+4GB+4TB。

  2. 每种分配方案对20MB大文件和20KB小文件各需要多少专用块来记录文件的物理地址?
    连续分配: 对大小二个文件都只需在文件控制块FCB中设二项,一是首块物理块块号,另一是文件总块数,不需专用块来记录文件的物理地址。
    链接分配: 对大小二个文件都只需在文件控制块FCB中设二项,一是首块物理块块号,另一是文件总块数;同时在每块存文件的物理块中设置存贮下一块块号的指针。
    二级索引: 对大小文件都固定要用二级索引,对20KB小文件,用一块作第一级索引,用另一块作二级索引,共用二块专用物理块作索引块,对于20MB大文件,用一块作第一级索引,用5块作第二级索引,共用六块专用物理块作索引块。
    UNIX的混合分配: 对20KB小文件只需在文件控制块FCB的i_addr[13]中使用前5个表目存放文件的物理块号,不需专用物理块。对20MB大文件,FCB的i_addr[13]中使用前10个表目存放大文件前10块物理块块号,用一级索引块一块保存大文件接着的1K块块号,还要用二级索引存大文件以后的块号,二级索引使用第一级索引1块,第二级索引4块。总共也需要6块专用物理块来存放文件物理地址。

  3. 为读大文件前面第5.5KB和后面(16M+5.5KB)信息需要多少次盘I/O操作?
    连续分配: 为读大文件前面和后面信息都需先计算信息在文件中相对块数,再计算物理块号=文件首块号+相对逻辑块号,最后化一次盘I/O操作读出该块信息。
    链接分配: 为读大文件前面5.5KB的信息,只需先读一次文件头块得到信息所在块的块号,再读一次第1号逻辑块得到所需信息。而读大文件后面16MB+5.5KB的信息,要先把该信息所在块前面块顺序读出,共化费4097次盘I/O操作,才能得到信息所在块的块号,最后化一次I/O操作读出该块信息。所以总共需要4098次盘I/O才能读取(16MB+5.5KB)字节信息。
    二级索引: 为读大文件前面和后面信息的操作相同,首先进行一次盘I/O读第一级索引块,然后根据它的相对逻辑块号计算应该读第二级索引的那块,第二次根据第一级索引块的相应表目内容又化一次盘I/O读第二级索引块,得到信息所在块块号,再化一次盘I/O读出信息所在盘块,这样读取大文件前面或后面信息都只需要3次盘I/O操作。
    UNIX混合分配: 为读大文件前面5.5KB信息,先根据它的相对逻辑块号,在内存文件控制块FCB的i_addr[13]第二个表目中读取信息所在块块号,而只化费一次盘I/O操作即可读出该块信息。为读大文件后在(16MB+5。5KB)信息,先根据它的相对逻辑块号判断它是在UNIX二级索引管理范围,先根据i_addr[11]内容化一次盘I/O操作读出第一级索引块,再根据第一级索引块表目内容再化费一次盘I/O操作,读出第二级索引块,就可以得到信息所在块块号,最后化一次盘I/O读出信息所在盘块,这样总共需要3次盘I/O操作才能读出文件后面的信息。

为清楚起见将结果列表。从上分析可知UNIX混合分配方案既可以管理很大的文件,又能花费较小的代价管理并快速存取小文件。
在这里插入图片描述

范例二

有一FAT如下所示,其中-1表示文件结束,-2表示盘块坏,0表示盘块空,问该FAT表中有几个文件?每个文件分别存在哪些盘块?在存入一个2盘块的文件,FAT内容如何?
在这里插入图片描述
解:
111

6.4 目录管理

一、目录

  • 目录是将文件FCB组织在一起的数据结构
  • 目录管理是文件系统中最主要的任务之一
  • 目录有时也可看成一个文件,称目录文件

功能:
实现按名存取:用户只需要提供文件名,即可对文件进行相应操作
提高对目录的检索速度
文件共享:多用户可共享同一个文件
允许文件重名:不同用户可以使用相同的文件名

二、文件控制块(FCB)

  • FCB是描述和控制文件的数据结构,包括文件名等基本信息,存取控制信息和使用信息
  • 文件系统依据FCB对文件进行操作
  • FCB与文件一一对应
  • FCB是一个目录项
  • FCB的集合组成目录
  1. 基本信息
    文件名:文件标识
    文件物理位置:指示文件在外存上的存储位置
    文件的逻辑结构
    文件的物理结构
  2. 存取控制信息
    文件主的存取权限(只读、读写、执行等)
    核准用户的存取权限
    一般用户的存取权限
  3. 使用信息
    文件的建立时间
    最后一次修改(或访问)时间
    当前使用信息
  4. FCB结构
    在这里插入图片描述6. MS文件系统 FCB结构
    • 共32字节
      在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

三、索引结点

  • 当文件名与FCB其它描述信息一起存放时,需要占用较多地方
  • 在对文件进行操作时,首先只需要按名查找
  • 如果将文件名与FCB其它描述信息分开存放,则可以节省查找文件的开销

在这里插入图片描述

  • 将FCB其它描述信息组合在一起,形成一个索引结点的数据结构
    在这里插入图片描述
  • 在Unix OS中,采用索引结点结构

四、单级目录

  • 整个OS中,建立一张目录表
  • 每个文件分配一个目录项(FCB)
    在这里插入图片描述
  • 状态位:目录项是否已被使用(1-使用,0-未使用)
    在MS-Dos中,如果文件名第一个字母为“0xE5”表示未使用
  1. 创建新文件
    • 查看目录,是否有同名文件
    • 没有,则找出一空目录项(状态位为0),将新文件名、物理地址和其它属性写入目录项,并置状态位为1
  2. 删除旧文件
    • 查找文件对应的目录项
    • 回收外存空间
    • 将状态位置0
  3. 优点
    • 简单
  4. 缺点
    • 查找速度慢
    • 不允许重名
    • 不便于实现文件共享

五、两级目录

  • 在系统中,建立一个主文件目录(MFD)

  • 为每个用户建立一个单独的用户文件目录(UFD)

  • 每个UFD是MFD的一个目录项
    在这里插入图片描述

  • 相对单级目录,两级目录有以下优点:
    1、提高了检索目录的速度
    2、在不同的用户目录中,可以同名
    3、不同用户可共享文件

  • 两级目录仍然存在的问题:
    用户不能继续建立自己新的子目录

六、树型目录结构

具有三级或三级以上的目录结构称为树型结构的目录
树型目录结构中,允许在任何一级子目录中,再创建新的子目录

1. 树型目录结构举例

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

从路径解析来看目录内容

显然路径解析的使用频率高,因此效率很重要
在这里插入图片描述

树状目录的完整实现

在这里插入图片描述

2. 路径

  • 从根目录到任何文件之间,只有唯一一条通路
  • 将根目录到文件之间经过的所有目录及文件名,用“/”符号连接起来,构成该文件的路径名
  • 每个文件,只有唯一的路径名(如B/B/L,C/I/L)

3. 当前目录

  • 如果每个文件的访问都从根目录开始,非常麻烦
  • 用户对文件的操作一般会在一个时间段集中在一个目录中进行,将这个目录设置为工作目录(当前目录)
  • 对文件的访问,如果没有路径名,则默认为在当前目录下操作

4. 增加目录

  • 用户可以根据需要,增加新目录
  • 增加新目录,可以使用文件系统命令(如MS-DOS中的md命令,或UNIX中的mkdir命令等)或系统调用

5. 删除目录

用户可以根据需要,删除旧目录

  1. 不删除非空目录
    • 如果目录中有文件(或子目录),不能删除
  2. 删除非空目录
    • 不管目录中是否有文件或子目录,都进行删除(比较危险)

七、目录查询技术

  • 按名查询文件FCB或索引结点
  • 依据FCB或索引结点中的文件的物理地址(盘块号),换算成文件在磁盘上的物理位置
  • 启动磁盘驱动程序,将所需要文件读到内存中
    在这里插入图片描述

6.5 文件存储空间的管理

一、空闲表法

  • 空闲表法属于连续分配方式
  • 空闲表法指为外存上的所有空闲区建立一张空闲表
    在这里插入图片描述

空闲盘区的分配算法:
1、首次适应算法
2、循环首次适应算法
3、最佳适应算法
4、最坏适应算法

空闲盘区的回收算法:对邻接盘区进行拼接

  • 空闲表法主要应用于对换区的分配操作中
  • 当文件(1-4个块)较小时,为了加快磁盘I/O,也尽量分配连续的盘块

二、空闲链表法

1. 空闲盘块链表法

  • 将磁盘上的所有空闲存储空间,以盘块为基本单位连成一个链表

  • 用户需要磁盘空间时,从链表首部分配盘块

  • 当用户释放磁盘空间时,将释放的盘块挂在链表尾部

  • 优点:
    盘块分配和回收操作简单

  • 缺点:
    空闲盘块链表可能很长
    空闲盘块链表中间任何指针出错,导致其后所有空闲盘块丢失
    在这里插入图片描述

2. 空闲盘区链表法

  • 将磁盘上的所有空闲盘区(多个连续盘块)连成一个链表

  • 用户需要磁盘空间时,沿链表采用首次适应算法,分配盘区

  • 当用户释放磁盘空间时,将释放的盘区插入链表适应位置(可能需要拼接)

  • 优点:
    空闲盘区链表可能较短

  • 缺点:
    盘区分配和回收操作比较复杂
    空闲盘区链表中间任何指针出错,导致其后所有空闲盘区丢失

3. 位示图法

  • 位示图指利用二进制的一位来表示磁盘中一个盘块的使用情况

  • 如当值为0时,表示空闲盘块
    当值为1时,表示已分配盘块
    在这里插入图片描述

  • 盘块的分配
    1、扫描位示图,找到一个或组值为0的盘块
    2、将扫描位置信息,变换为盘块号(n)
      如第 i i i字节,第 j j j位,则 n = i x 8 + j n = ix8 + j n=ix8+j
    3、修改位示图,使新分配盘块的对应位为1

  • 盘块的回收
    1、将盘块号(n),变换为位置信息
       i = n / 8 ; j = n m o d 8 i = n / 8; j = n mod 8 i=n/8;j=nmod8
    2、修改位示图,使第 i i i字节、第 j j j位为0

  • 优点:
    1、位示图占用空间较小,可以调入内存
    2、分配和回收操作简单、有效

  • 位示图法常用于微型机和小型机中,如MS OS系统中

四、成组链接法

  • 将空盘块每N(如100)个组成一组
  • 将空闲盘块组连成链表
  • 空闲盘块号栈:存放当前可用的一组空闲盘块号
    在这里插入图片描述
    在这里插入图片描述
  • 盘块的分配
    1、若s.free=1,则将栈底盘块号所对应的盘块(内容)调入空闲盘块号栈,并将该盘块分配出去
    2、否则,直接将栈底盘块号所对应的盘块分配出去,并将s.free递减1
    在这里插入图片描述
  • 盘块的回收
    1、若s.free=N,则将空闲盘块栈内容写入新释放的盘块中,并使s.free=1,且将该盘块作为栈底
    2、否则,s.free递增1,将该盘块作为栈底
    在这里插入图片描述

6.6 文件共享和文件保护

一、绕弯路文件共享方法

  • 每个用户工作的目录为当前目录
  • 如果文件不在当前目录,则从当前目录开始,向上(父目录)或向下(子目录)查找
  • 如当前目录为PA要查找
    JBK中的B文件,可采用
    cd …\D\B
    在这里插入图片描述

二、基于索引结点的共享方式

  • 目录项只包含文件名及指向索引结点的指针
  • 共享同一文件的不同目录项,文件名不同,但指向索引结点的指针相同
  • 设置链接计数器,指示共享目录项数目
    在这里插入图片描述
    举例
    用户Zhao创建一个文件A,用户Qian用文件名B共享该文件,用户Zhao删除文件A后的情况
    在这里插入图片描述
  • 优点:
    共享同一文件的任意用户对文件的修改,其它都可以共享
  • 缺点:
    创建共享文件的用户,即使已删除其文件,但如果还有其它用户共享该文件,则文件属主不变(创建用户必须继续为该文件付费)

三、利用符号链实现文件共享

  • 用户共享文件时,采用符号链(Link)

  • 符号链是指向文件所在目录项位置的指针(如同一系统中的路径名,或网络中其它主机IP地址及路径名)

  • 文件主或文件不知道有多少个用户在共享文件

  • 文件主可以完全删除共享文件

  • 共享文件的用户在访问一个已删除的共享文件时,会出访问错误

  • 优点:
    可以共享网络上任何地点的共享文件

  • 缺点:
    访问速度较慢(沿链查找)

6.7 磁盘容错技术

  • 目标:
    磁盘某部分出现缺陷或故障时,
    1、磁盘仍能正常工作
    2、不致造成数据的错误和丢失

一、第一级容错技术(SFT-I)

  • SFT-I主要防止出现磁盘表面错误时,数据的丢失
  • SFT-I在一般的磁盘存储系统中都会使用

1. 双份目录和双份文件分配表(FAT)

  • 目录和文件分配表是文件系统中最重要的数据
  • 在磁盘的不同地方,分别存放两份目录和文件分配表
  • 操作一般在主目录和主FAT上进行,并定期将修改的数据存入备用目录和FAT中
  • 当磁盘出现损坏,启动备用目录和备用FAT,并新建一份目录和FAT
  • 每次开机,检查两份目录和FAT的一致性

2. 热修复重定向

  • 在磁盘中建立热修复区
  • 当出现盘块损坏时,将数据写入热修复区
  • 每次对损坏盘块的访问,都自动转为对应热修复区中盘块的访问

3. 写后读校验

  • 将从内存某缓冲区A写入盘块,立即读出该盘块的内容至内存缓冲区B
  • 比较A和B两个缓冲区的内容是否一致
  • 若不一致,再做一次;若仍然不一致,则认为盘块损坏,将内容写入热修复区

二、第二级容错技术(SFT-II)

  • SFT-II主要解决磁盘驱动器发生故障时,数据无法正常读写的问题
  • 相对SFT-I,SFT-II是高一级的容错技术

1. 磁盘镜像

  • 将两个磁盘驱动器连在一个磁盘控制器上
  • 每次向主磁盘写入的数据,同样也向备份磁盘写入,并写入相同的位置
  • 主磁盘和备份磁盘中的所有数据完全相同
  • 当主磁盘驱动器损坏时,启用备份磁盘
    在这里插入图片描述

2. 磁盘双工

  • 将两个磁盘驱动器分别接在两台磁盘控制器上
  • 每次向主磁盘写入的数据,同样也向备份磁盘写入,并写入相同的位置
  • 主磁盘和备份磁盘中的所有数据完全相同
  • 当主磁盘系统损坏时,启用备份磁盘系统
    在这里插入图片描述
  • 优点:
    具有容错能力
  • 缺点:
    浪费严重(只有50%效率)

6.8 数据一致性控制

一、数据一致性问题

  • 当数据同时被存放到不同的文件中时,如何保证对数据的修改在各文件中保持一致
  • 文件的多个备份,如何保持一致
  • 共享数据的顺序修改

二、事务

1. 事务

  • 事务是用于访问和修改各种数据项的一个程序单位
  • 事务操作具有“原子性”,即要么数据都进行修改,要么数据都不进行修改

2. 事务记录

  • 事务记录记录事务运行时数据项修改的全部信息
  • 事务记录必须存放在稳定存储器中
  • 事务记录包括:
    ⑴、事务名 ⑵、数据项名
    ⑶、旧值 ⑷、新值

3. 恢复算法

  • Undo(Ti):把所有被事务Ti修改过的数据,恢复为旧值
  • Redo(Ti):把所有需要被事务Ti修改的数据,置为新值
  • 事务通过事务记录和恢复算法,实现数据一致性

三、并发控制

1. 利用互斥锁实现“顺序性”

  • 每个对象设置一把“锁”
  • 对对象的访问,必须先获得“锁”(关锁)
  • 访问完对象,释放“锁”(开锁)

2. 利用信号量机制实现“顺序性”

  • 利用互斥信号量(Mutex)实现对象的顺序访问
  • 利用一般信号量,实现访问者情况的记录

四、磁盘块号的一致性

  • 空闲盘块:
    通过空闲盘块管理机制实现

  • 数据盘块管理
    通过目录及FAT(或索引节点)实现

  • 正常情况下,空闲盘块与数据盘块互补,即盘块要么是空闲盘块,要么是数据盘块

  • 空闲盘块计数器
    通过空闲盘块管理,记录空闲盘块的情况,每个盘块对应一个计数器(1-空闲盘块,0-非空闲盘块)

  • 数据盘块计数器
    通过FAT(或索引节点)记录数据盘块的情况,每个盘块对应一个计数器(1-数据盘块,0-非数据盘块)

  • 正常情况:
    在这里插入图片描述

  • 丢失盘块
    在这里插入图片描述
    将第2块放入空闲盘块中

  • 空闲盘块重复出现
    在这里插入图片描述
    从空闲盘块管理机制中删除一个3号盘块

  • 数据盘块重复出现
    在这里插入图片描述
    这是一个严重错误,必须立即报告并修复

练习

设空闲存储空间管理的成组链接法中,每5块为一组,当前空盘块号栈的内容从S.free开始依次为3,1,2,3。试写出:①回收第4块;②再回收第7,8块;③分配1块;④分配3块;
以上分配和回收过程。
(写明每次操作的空闲盘块号栈内容及被改变了内容的空闲盘块号及其具体内容)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/936574.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java后端开发面试题——集合篇

ArrayList底层的实现原理是什么 底层数据结构 ArrayList底层是用动态的数组实现的 初始容量 ArrayList初始容量为0,当第一次添加数据的时候才会初始化容量为10 扩容逻辑 ArrayList在进行扩容的时候是原来容量的1.5倍,每次扩容都需要拷贝数组 添加逻…

最强嘴提o.o文字转语音

下载 链接:https://pan.baidu.com/s/1cb24WW2dihtRpMz4giMxyw 提取码:k3xu 解压密码:领航员未鸟 项目源码:https://github.com/Plachtaa/VITS-fast-fine-tuning/tree/main 使用 解压后来到,该目录下,把…

在云原生环境中构建可扩展的大数据平台:方法和策略

文章目录 1. **选择适当的云提供商:**2. **采用容器化和微服务架构:**3. **分层架构设计:**4. **弹性计算资源:**5. **使用分布式计算框架:**6. **数据分区和分片:**7. **使用列式存储:**8. **缓…

JS 常见的 6 种继承方式

原型链继承 原型链继承是比较常见的继承方式之一,其中涉及的构造函数、原型和实例,三者之间存在着一定的关系,即每一个构造函数都有一个原型对象,原型对象又包含一个指向构造函数的指针,而实例则包含一个原型对象的指…

On-Manifold Optimization: Local Parameterization

Overview Manifold Space vs Tangent Space Jacobian w.r.t Error State Jacobian w.r.t Error State vs True State According 1 2.4, The idea is that for a x ∈ N x \in N x∈N the function g ( δ ) : f ( x ⊞ δ ) g(\delta) : f (x \boxplus \delta) g(δ):f(x…

<C++> STL_deque

<c> STL_deque 1.deque的使用 deque(双端队列)&#xff1a;是一种双开口的"连续"空间的数据结构&#xff0c;双开口的含义是&#xff1a;可以在头尾两端进行插入和 删除操作&#xff0c;且时间复杂度为O(1)&#xff0c;与vector比较&#xff0c;头插效率高&a…

字节码操作的手术刀-Javassist

Javassist 前面文章介绍的 ASM 入门门槛还是挺高的&#xff0c;需要跟底层的字节码指令打交道&#xff0c;优点是小巧、性能好。Javassist 是一个性能比 ASM 稍差但是使用起来简单很多的字节码操作库&#xff0c;不需要了解字节码指令&#xff0c;由东京工业大学的数学和计算机…

求解整数规划问题的割平面法和分支定界法

文章目录 整数规划割平面法分支定界法代码实现 整数规划 整数规划问题是优化变量必须取整数值的线性或非线性规划问题&#xff0c;不过&#xff0c;在大多数情况下&#xff0c;整数规划问题指的是整数线性规划问题。 其数学模型为 m i n f ( x ) c T x s.t A x b x ≥ 0 x…

opencv的haarcascade_frontalface_default.xml等文件

文章目录 GitHub下载在安装好的OpenCV文件夹下寻找opencv-python中获取 GitHub下载 下载地址&#xff1a;https://github.com/opencv/opencv/tree/master/data/haarcascades 在安装好的OpenCV文件夹下寻找 路径如下&#xff1a; 你安装的opencv路径\OpenCV\opencv\build\et…

亮点!视频云存储/安防监控视频智能分析平台睡岗离岗检测

在生产过程中&#xff0c;未经领导允许的擅自离岗、睡岗会带来很多的潜在危害。TSINGSEE青犀推出的视频云存储/安防监控视频智能分析平台得睡岗离岗检测根据AI视频分析技术建立人工智能算法&#xff0c;对视频画面展开分析与识别。自动识别出人员睡岗、离岗、玩手机与抽烟等动作…

十六、pikachu之SSRF

文章目录 1、SSRF概述2、SSRF&#xff08;URL&#xff09;3、SSRF&#xff08;file_get_content&#xff09; 1、SSRF概述 SSRF(Server-Side Request Forgery&#xff1a;服务器端请求伪造)&#xff1a;其形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能&…

c++ qt--线程(一)(第八部分)

c qt–线程&#xff08;一&#xff09;&#xff08;第八部分&#xff09; 一.进程&#xff08;Process&#xff09; 在任务管理器中的进程页下&#xff0c;可以看到进程&#xff0c;任务管理器将进程分为了三类&#xff0c;应用、后台进程、window进程 应用&#xff1a; 打开…

MyBatis-Plus 总结

MyBatis-Plus简介 官网&#xff1a;https://baomidou.com/ GitHub&#xff1a;https://github.com/baomidou/mybatis-plus Gitee&#xff1a;https://gitee.com/baomidou/mybatis-plus 简介 MyBatis-Plus &#xff08;简称 MP&#xff09;是一个 MyBatis的增强工具&#x…

【C++入门到精通】C++入门 —— 多态(抽象类和虚函数的魅力)

阅读导航 前言一、多态的概念1. 概念2. 多态的特点 二、多态的定义及实现1. 多态的构成条件2. 虚函数3. 虚函数的重写⭕虚函数重写的两个例外1.协变(基类与派生类虚函数返回值类型不同)2.析构函数的重写(基类与派生类析构函数的名字不同) 4. override 和 final&#xff08;C11 …

SLAM从入门到精通(开始篇)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 很多同学喜欢学习linux&#xff0c;但是他们只是把linux当成是一个嵌入式技术在学习&#xff0c;而不是当成工具在使用。平时&#xff0c;要么是自…

appium+python自动化测试

获取APP的包名 1、aapt即Android Asset Packaging Tool&#xff0c;在SDK的build-tools目录下。该工具可以查看apk包名和launcherActivity 2、在android-sdk里面双击SDK-manager,下载buidl-tools 3、勾选build-tools&#xff0c;随便选一个版本&#xff0c;我这里选的是24的版…

YOLOv5、v8改进:CrissCrossAttention注意力机制

目录 1.简介 2. yolov5添加方法&#xff1a; 2.1common.py构建CrissCrossAttention模块 2.2yolo.py中注册 CrissCrossAttention模块 2.3修改yaml文件。 1.简介 这是ICCV2019的用于语义分割的论文&#xff0c;可以说和CVPR2019的DANet遥相呼应。 和DANet一样&#xff0c;…

DBeaver的安装和使用:windows版

DBeaver官网下载地址&#xff1a;https://dbeaver.io/download/ 下载完成后&#xff0c; 进入傻瓜式安装&#xff1a; 这里会进入重复界面&#xff0c;一样点击下一步即可 选择安装目录&#xff0c;尽量不要选C盘&#xff0c; 我的电脑只有c盘&#xff0c; 没办法 等待安装完成…

linux操作系统的权限的深入学习(未完)

1.Linux权限的概念 Linux下有两种用户&#xff1a;超级用户&#xff08;root&#xff09;、普通用户。 超级用户&#xff1a;可以再linux系统下做任何事情&#xff0c;不受限制 普通用户&#xff1a;在linux下做有限的事情。 超级用户的命令提示符是“#”&#xff0c;普通用户…

MVSNet 和 PatchMatchNet 的DTU数据集 几个不同之处 一定要注意

文章目录 1 测试集 数据加载不同2 训练集 数量 分辨率不同 1 测试集 数据加载不同 1.MVSNet 的DTU测试数据集和PatchmatchNet测试数据集不一样&#xff1b; 区别在于数据加载&#xff0c;前者 cams文件最后是最小深度和间隔&#xff0c;后者是最小深度和最大深度。 2 训练集 …