操作系统——第八章笔记(二)

存储空间的管理
1.为实现存储空间分配,系统需要:
 记住空闲存储空间使用情况;为空间设置相应的数据结构;
 提供对存储空间分配、回收的操作手段。
2.典型的管理方法:
2.1空闲表和空闲链表法
空闲表法(常用于连续分配管理方式):
1)数据结构
 系统为外存上的所有空闲区建立一张空闲表
 每个空闲区对应一个空闲表项(表项包括序号、空闲区的第一个盘块号、空闲盘块数等)
 将所有空闲区按其起始盘块号递增的次序排列,如右图。
2)存储空间的分配与回收操作
 与内存的动态分配类似,同样可采用首次适应算法、循环首次适应算法等。
 回收主要解决对数据结构的数据修改。
 应该说明,虽然很少采用连续分配方式,然而在外存的管理中,由于它具有较高的分配速度,可减少访问磁盘的I/O频率,故它在诸多分配方式中仍占有一席之地。(如实现虚拟用的部分外存就是连续分配方式)
空闲链表法(将所有空闲盘区拉成一条空闲链):
根据构成链所用基本元素的不同,可把链表分成两种形式:
1)空闲盘块链
 将磁盘上的所有空闲空间,以盘块为单位拉成一条链。
 因创建文件而请求分配空间时,系统从链首依次摘下适当数目的空闲盘块分配给用户。
 因删除文件而释放存储空间时,系统将回收的盘块依次插入空闲盘块链的末尾。
 优点:分配和回收一个盘块的过程非常简单,但为一个文件分配盘块时,可能要重复操作多次。
 特点:分配回收简单。链表长,大量分配时需要操作的指针多。
2)空闲盘区链
将所有空闲盘区拉成一条链。每个盘区上含有:
指示下一空闲盘区的指针、本盘区大小等信息
 分配通常采用首次适应算法。回收盘区时,将回收区与相邻的空闲盘区相合并。
为提高检索速度,可以采用显式方法,为空闲盘区建立一张链表放在内存中。
 分配、回收操作涉及的链式数据结构的处理方便
 特点:链表长度不定,分配时操作的指针数量相对较少,但分配回收操作相对复杂。
2.2位示图法——位示图
1)利用二进制的一位来表示一个盘块的使用情况。
 值为0表示对应的盘块空闲,为1表示已分配。有的系统则相反。
 磁盘上的所有盘块都有一个二进制位与之对应,这样由所有盘块所对应的位构成一个集合,称为位示图。
2)总块数=mn。可用mn个位数来构成位示图,可看成是二维数组(数据结构)。
盘块的分配与回收
 根据位示图进行盘块分配:
a)顺序扫描位示图。找到为0的二进制位。
b)将所找到的一个或一组二进制位,转换成与之对应的盘块号。进行分配操作。
盘块号计算公式为:盘块号=列总数*(i-1)+ j;(注意下标i,j从1开始)
c)修改位示图。
 根据位示图进行盘块回收:
a)将回收盘块的盘块号转换成位示图中的行号和列号。转换公式为:i=(盘块号-1)div列数+1;j=(盘块号-1)mod列数+1
Div 求商,mod 取余,公式中的i、j都是从1开始的(如12号盘块转换后为1,12)
 修改位示图。
 优点:从位示图中很容易找到一个或一组相邻接的空闲盘块。
 但限于容量问题,常用于微型机和小型机中。
3)成组链接法
 大型文件系统,空闲表或空闲链表太长不方便管理操作。
 UNIX系统中采用成组链接法,这是将两种方法结合而形成的一种空闲盘块管理方法。
 中心思想:
a)所有盘块按规定大小划分为组;
b)组间建立链接;
c)组内的盘块借助一个系统栈可快速处理,且支持离散分配回收。
 链表长度上限固定
 组内的盘块借助一个系统栈可快速处理,且分配回收比较简单。
 支持离散分配回收。
2.2.1空闲盘块的组织
 空闲盘块号栈。
a)用来存放当前可用的一组空闲盘块的盘块号(最多含100个号)
b)栈中尚有的空闲盘块号数N。(N兼具栈顶指针用。栈底为S.free(0),栈满时栈顶到达S.free(99),N=100,表示有100个盘块供使用。
 链接
a)每一组的第一个盘块记录下一组的盘块号,形成了一条链。
b)总将链的第一组盘块总数和所有的盘块号,记入栈,作为当前可供分配的空闲盘块号。
2.2.2空闲盘块的分配与回收
 分配盘块时,须调用分配过程来完成。
a)先检查空闲盘块号栈是否上锁,如没有,便从栈顶取出一空闲盘块号,将与之对应的盘块分配给用户,然后将栈顶指针下移一格。
b)若该盘块号已是栈底,即S.free(0),到达当前栈中最后一个可供分配的盘块号。
c)读取该盘块号所对应的盘块中的信息:即下一组可用的盘块号入栈。
d)原栈底盘块分配出去。修改栈中的空闲盘块数。
 回收
a)回收盘块号记入栈顶,空闲数N加1
b)N达到100时,若再回收一块,则将该100条信息填写入新回收块。
3.磁盘
3.1 磁盘容错(SFT,system fault tolerance)
3.1.1 防止磁盘故障造成的文件不安全
3.1.2 SFT I:磁盘表面故障
1)双目录、双文件分配表(空间冗余)
2)写后读校验、热修复重定向(时间操作冗余)
 写入磁盘后再读回内存做一致性校验
 热修复写过程:从坏道重定向到专区并记录
3.1.3 SFT II:磁盘驱动器、控制器故障
1)驱动器故障:磁盘镜像
2)控制器故障:磁盘双工——并行控制器,分离搜索加快读取
3.1.4 SFT III:高级容错技术
1)双机热备份
2)双机互备份
3)公用磁盘模式
3.2数据一致性
一个数据分别存储到多个文件中,典型的如数据库
3.2.1保证数据一致性:
高可靠存储器(冗余保证稳定,磁盘双工)+ 一致性软件
3.2.2 概念
 事务:对数据各处保存位置访问、修改使其维持一致性的一次操作。
 事务记录:记录事务运行时数据项修改全部信息的数据结构:事务名、数据项名、旧值、新值。
 恢复算法:利用事务记录表处理已完成、未完成事务。
 检查点:每隔一段时间,将内存中的事务记录表、已修改数据、检查点输出到稳定存储器,
3.2.3并发控制
3.2.4重复数据的一致性
3.3磁盘提速
3.3.1磁盘高速缓存
3.3.2提前读
3.3.3延迟写
3.3.4优化物理块分布
3.3.5虚拟盘
3.3.6磁盘冗余阵列(高速、大容量磁盘系统)

猜你喜欢

转载自blog.csdn.net/weixin_43271377/article/details/84503535