0
点赞
收藏
分享

微信扫一扫

操作系统-文件存储空间管理

窗外路过了谁 2022-03-15 阅读 66

文章目录

操作系统需要对磁盘进行那些管理

  1. 对非空闲磁盘块的管理
  2. 对空闲磁盘块的管理

文件存储空间管理

存储空间划分与初始化

  1. 文件卷的概念
  2. 目录区与文件区

几种管理办法

  1. 空闲表法
  2. 空闲链表法
  3. 位示图法
  4. 成组链接法

空闲表法

如下图就是一个磁盘空间,由无数个磁盘块组成,可以看到绿色为空闲块,橙色为非空闲块
在这里插入图片描述
我们可以使用这样一张表来记录每一个空闲块信息,例如0号位块附近有一个相邻的空闲块,所以他们空闲块长度为2,以此类推

而磁盘分配也可以按照下表所示,进行首次适应、最佳适应、最坏适应等算法完成文件分配到哪个区间
而回收也是 同理,例如上图中2号块回收了,他附近有0、1两个空闲块
在这里插入图片描述

空闲链表法

空闲盘链

即由一个个空闲块构成的链表,分配也很简单,需要几个就从链表头开始分配,回收则追加到链表尾

在这里插入图片描述

空闲盘区链

即由一个个连续空闲块构成的链,分配也是可以按照首次适应、最佳适应等算法分配空闲区,若不够就凑一个出来,回收也是同理看看回收的区附近有没有空闲区,若有则合并,没有则追加到链表尾巴

在这里插入图片描述

位示图法

很简单空闲区用0表示,非空闲就用1表示。若需要分配盘块,如下图所示,分配1字号10位号对应的物理块我们要怎么算呢?
可以看到1个字号16位,1字号的10号位说白了就是1个字号+10字节
即 1*16+10=26

在这里插入图片描述

所以他所对应的物理块号是26

在这里插入图片描述
而位示图法回收也很简单,将表位置为0即可

成组链表法

如下图所示,用一个超级块记录每一个空闲块。每个空闲块第一位记录下一组空闲块大小,后续空闲块指向下一组空闲块

在这里插入图片描述

假如我们要分配1个空闲块。我们会先看看超级块中是有一个空闲块,若有从拿出块尾指向的空闲块给系统,然后下一组空闲块数-1.
若需要分配100个空闲块,如下图所示,将超级快指向的下一组空闲块全部分配出去,超级快指向被分配出去的空闲的下一组空闲块数以及地址

回收也很简单,若超级块有足够的空间记录空闲块,则将空闲块信息记录起来,并增加空闲块数即可。
若没有则直接指向这个回收的空闲块,然后回收的空闲块记录并指向超级快原本维护的空闲块即可。

在这里插入图片描述

举报

相关推荐

0 条评论