第8章 磁盘存储空间的管理

总图概览:
在这里插入图片描述

  1. 磁盘块:
  1. 磁盘块是存储介质上连续扇区所组成的一个区域。
  2. 磁盘块是主存和辅助进行信息交换的最小单位,每次总是交换一块或整数块信息。一般来讲,是2n个扇区。
  1. 为什么存在磁盘块?
  1. 读取方便。由于扇区的存储数量比较小,所以OS将相邻的扇区组合在一起,形成一个块,再对块进行整体的操作。
  1. 分离对底层的依赖:OS忽略对底层物理存储结构的设计。通过虚拟出来磁盘块的概念,在系统中认为块是最小的单位。

8.2.1 空闲表法

  1. 空闲表法属于连续分配方式,与内存的动态分配方式类似,它为每个文件分配一块连续的存储空间。
  2. 系统为外存所有空闲区建立一张空闲表,每个空闲区对应一个空闲表项。再将所有空闲区按其起始盘块号递增的次序排列,形成空闲盘块表。
  3. 存储空间的分配与回收同内存动态分配方法。

在这里插入图片描述

  1. 特点:分配速度快,访问速度快;
  2. 分配算法:首次适应算法、最佳适应算法;
  3. 适应场景:对换空间一般采用连续分配方法;多媒体文件,为了减少磁头的寻道时间,采用连续分配算法。

8.2.2 空闲链表法

  1. 空闲盘块链

将磁盘上的所有空闲空间以盘块为单位组成一条链,其中的每一个盘块都有指向后继盘块的指针。
优点:分配回收方便;
缺点:盘块数量多,空闲盘块链会很长。

  1. 空闲盘区链

将磁盘上的所有空闲盘区组成一条链。在每个盘区上除含有用于指示下一个空闲盘区的指针外,还应有能指明本盘区大小(盘块数)的信息。
优点:空闲盘块链较短;
缺点:分配回收复杂。
在这里插入图片描述

8.2.3 位示图

  1. 位示图
  1. 利用二进制的一位(bit)表示磁盘中一个盘块的使用情况。 值:空闲,0;已分配,1;
  2. 磁盘上的所有盘块都有一个bit与之对应,由所有盘块所对应的位构成一个集合,称为位示图。 行号称为字号,列号称为位号;
  3. 二维数组表示:map[m][n];
    在这里插入图片描述
  1. 盘块的分配
  1. 顺序扫描位示图,从中找出一个或一组其值为“0”的二进制位;并转换成与之相应的盘块号。例:A文件需要5个物理块.
  2. 修改位示图,令map[i][ j] = 1。
  1. 盘块的回收
  1. 将回收盘块的盘块号转换成位示图中的行号和列号。
  2. 修改位示图。令map[i][ j] = 0。
  1. 盘块号和位示图中元素地址的计算,假设都从0开始
  1. 由位示图计算磁盘的相对块号b,如(字号3,位号4)
    b=字号16+4; 一般性: b=字号n+位号
  2. 将盘块号转换为位示图中的字号和位号,如16盘块:
    字号=16/16; 位号=16 mod 16
    字号=b/n; 位号=b mod n;
  1. 例题

有3200个磁盘块(512byte)可用来存储信息,用字长为16位的字来构造位示图如下。假设CHS从0开始,扇区有8个,H有2个;
在这里插入图片描述
(1)位示图共需多少个字?(2)若某文件长度为3200字节,系统将为其分配哪些磁盘块?磁盘块从0开始编号。

解:(1) 共需字:3200/16=200;
(2) 3200/512=7块,从位示图中找到如下7块分配给该文件:19,23,24,25,26,36,37。

8.2.4 成组链接法

  1. 空闲表法和空闲链表法不适合大型文件系统,会使空闲表或空闲链表太长。

空闲块分成若干组,如每100个空闲块为一组,放在一个空闲块中,首先登记了空闲块总数和下一组空间块的物理盘块号。
在这里插入图片描述
初始化时,编号12~349为空闲块,共338个,利用空闲块来存放空闲链表,超级块中部分内容作为管理块,假设每个空闲块保存100个空闲块信息。

  1. 成组链接法-分配算法:顺序分配
    在这里插入图片描述
    现在在这样的情况下,在超级块中有38个空闲块,申请一个物理块就将超级块中的最上面的一块13给分出去,依次进行。当超级块中的情况变为下面这样:
    在这里插入图片描述
    此时将50号空块里面的内容复制到超级块中,并且修改超级块中的总个数位100,并且将超级块中第一块的空闲块的位置里面指向150号空块,然后将50号空块分配出去。

  2. 成组链接法-回收算法

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

  1. 成组链接法占空间少(除超级块中内容外,均隐藏在空闲块中),分配、释放快,适合大型文件系统。

总结:磁盘空间管理方法

在这里插入图片描述

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值