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

存储空间的划分与初始化

安装windows操作系统,为磁盘分区----C盘…

文件卷

1,卷:
硬盘上的存储区域。驱动器使用一种文件系统(如 FAT 或 NTFS)格式化卷,并给它指派一个驱动器号。单击“Windows 资源管理器”或“我的电脑”中相应的图标可以查看驱动器的内容。一个硬盘包括好多卷,一卷也可以跨越许多磁盘 ;如C盘(文件卷C),D盘(文件卷D);

存储空间的划分,
在这里插入图片描述,2,文件卷又可以具体的划分为目录区和文件区;
目录区:
在这里插入图片描述
文件区:
在这里插入图片描述
3,有的系统支持超大型文件,可支持由多个物理磁盘组成的一个文件卷
在这里插入图片描述

存储空间的管理方法:
1.空闲表法:适用于“连续分配的方式”;

分配磁盘块的方式可以类比内存管理中的动态分区:
1.1 首次适应算法,从第一个表项开始找,找到的第一个满足请求的块即可分配给他,同时更新空闲盘块表;
在这里插入图片描述

2.空闲链表法

在这里插入图片描述
操作系统一直保存着空闲盘块/盘区链的链头,链尾指针;
2.1 空闲盘块链
在这里插入图片描述
分配盘块在这里插入图片描述
回收盘块:
在这里插入图片描述

空闲盘区链
在这里插入图片描述空闲盘区中的第一个盘块内记录了盘区的长度,下一个盘区的指针;

分配:
在这里插入图片描述
假如如上图所示,最大盘区也只有包含3个盘块的,而现在我需要分配6个盘块给我,那么我可以将12-13-14,21-22-23一起分配给我;
分配效率更高;

3.位示图法

通过二元组(字号,位号)来寻找对应的盘块号;
在这里插入图片描述
位示图:字号是行号,位号是列号;
在这里插入图片描述
如果盘块好,字号,位号都从0开始;
在这里插入图片描述
二元组计算公式:(n表示字长)
1.字号,位号推导出盘块号公式:
在这里插入图片描述
2.盘块号推导出字号,位号的公式:
在这里插入图片描述
位示图的分配与回收:
在这里插入图片描述
位示图既支持连续分配,也支持离散分配,
连续分配:假设文件需要K个块,可以顺序扫描位示图,找到k个相邻或不相邻的"0",根据字号,盘号计算出相应的盘块号,将相应的盘块分配给文件,然后将对应位置设置为1;
如果是需要离散分配(不连续),那么找K个块就不需要找到连续的K个0,只要是0就可以;

3.成组链接法

空闲表,空闲链表法不适合大型文件系统,因为空闲表和空闲链表可能过大;
在这里插入图片描述
在这里插入图片描述

超级块中记录了空闲盘块的数量,以及这些空闲盘块的号;
在这里插入图片描述
在这里插入图片描述
注意:每个分组中的块号不一定连续,每个分组的盘块数量有上限;

分配问题:
如果需要分配的盘块数<分组的盘块数量,比如需要一个盘块,那么将最末端的一个盘块号对应的盘块分出去,然后在组中删除这个盘块号(201),同时将下一组空闲盘块数量-1;
如果需要分配100个空闲盘快;
在这里插入图片描述
在这里插入图片描述
注意,第一组的100个块中第300号块也是可以被分配给文件的,只不过里边存储了额外的下一组的信息;
如果需要的盘块数超过了100,比如230个;
1.将第一组的100个块分配;第二组的信息复制到第一组;
再分配100个块,第三组的信息复制到第一组;
再分配30个块;

回收:
如果第一个块不够100个,缺少x个,那么将x个回收的块加入到第一组中,并将第一组的块数量+x直到够100个块为止,如果第一组的块已经达到数量上线,然而还要在回收1块,此时需要将超级块中的数据复制到新回收的第一个块中,让新回收的块称为第一个分组,而超级块包含的块数量置为1,并指向新回收的块;
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黒猫.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值