4.1_5 文件存储空间管理

文章目录

  • 4.1_5 文件存储空间管理
    • (一)存储空间的划分与初始化
    • (二)存储空间管理——空闲表法
    • (三)存储空间管理——空闲链表法
      • (1)空闲盘块链
      • (2)空闲盘区链
    • (四)存储空间管理——位示图法
    • (五)存储空间管理——成组链接法
  • 总结

4.1_5 文件存储空间管理

image-20240317184135931

image-20240317184142478

(一)存储空间的划分与初始化

  安装 Windows 操作系统的时候,一个必经步骤是——为磁盘分区(C: 盘、D: 盘、E: 盘等)。

  存储空间的划分:将物理磁盘划分为一个个文件卷(逻辑卷、逻辑盘)。

image-20240317184341735

image-20240317184418443

(二)存储空间管理——空闲表法

image-20240317184536653

  如何分配磁盘块:与内存管理中的动态分区分配很类似,为一个文件分配连续的存储空间。同样可采用首次适应、最佳适应、最坏适应等算法来决定要为文件分配哪个区间。

  如图,假设采用“首次适应算法”。此时有一个新文件申请请求3个块,那么系统会从前到后依次扫描,找到第一个满足的空闲块。当扫描到“空闲盘块表”的第三个表项,即第一个空闲盘块号为13,空闲盘块数为5时(原本13~17号块都是空闲的、绿色的),选择此处放入。并更新空闲盘块数为2

  如何回收磁盘块:与内存管理中的动态分区分配很类似,当回收某个存储区时需要有四种情况。

  ①回收区的前后都没有相邻空闲区;

  ②回收区的前后都是空闲区;

  ③回收区前面是空闲区;

  ④回收区后面是空闲区。

  总之,回收时需要注意表项的合并问题

(三)存储空间管理——空闲链表法

image-20240317185245950

image-20240317185321863

(1)空闲盘块链

image-20240317185435133

  操作系统保存着链头、链尾指针

  如何分配:若某文件申请K个盘块,则从链头开始依次摘下K个盘块分配,并修改空闲链的链头指针。

  如何回收:回收的盘块依次挂到链尾,并修改空闲链的链尾指针。

  适用于离散分配的物理结构。为文件分配多个盘块时可能要重复多次操作。

(2)空闲盘区链

image-20240317185547984

  操作系统保存着链头、链尾指针

  如何分配:若某文件申请K个盘块,则可以采用首次适应、最佳适应等算法,从链头开始检索,按照算法规则找到一个大小符合要求的空闲盘区,分配给文件。若没有合适的连续空闲块,也可以将不同盘区的盘块同时分配给一个文件,注意分配后可能要修改相应的链指针、盘区大小等数据。

  如何回收:若回收区和某个空闲盘区相邻,则需要将回收区合并到空闲盘区中。若回收区没有和任何空闲区相邻,将回收区作为单独的一个空闲盘区挂到链尾。

  离散分配、连续分配都适用。为一个文件分配多个盘块时效率更高。

(四)存储空间管理——位示图法

image-20240317202212962

位示图

  每个二进制位对应一个盘块。在本例中,“0”代表盘块空闲,“1”代表盘块已分配。位示图一般用连续的“字”来表示,如本例中一个字的字长是16位,字中的每一位对应一个盘块。因此可以用(字号,位号)对应一个盘块号。当然有的题目中也描述为**(行号,列号)**。

  重要重要重要:要能自己推出盘块号与(字号,位号)相互转换的公式。

  注意题目条件:盘块号、字号、位号到底是从0开始还是从1开始。

  如本例中盘块号、字号、位号从0开始,若n表示字长,则:

  (字号, 位号) = (i, j)的二进制位对应的盘块号b=ni + j

  b号盘块号对应的字号i = b/n,位号j = b%n

  例:

  (0, 1) —> b = 16*0 + 1 = 1;

  (1, 10) —> b = 16*1 + 10 + 26;

  b = 13 —> i = 13/16 = 0,j = 13%16 = 13;

  b = 31 —> i = 31/16 = 1,j = 31%16 = 15。

如何分配

  若文件需要K个块,则

  ①顺序扫描位示图,找到K个相邻或不相邻的“0”;

  ②根据字号、位号算出对应的盘块号,将相应盘块分配给文件;

  ③将相应位设置为“1”。

如何回收

  ①根据回收的盘块号计算出对应的字号、位号;

  ②将相应二进制位设为“0”。

  位示图法——连续分配、离散分配都适用。

(五)存储空间管理——成组链接法

  空闲表法、空闲链表法不适用于大型文件系统,因为空闲表或空闲链表可能过大。UNIX系统中采用了成组链接法对磁盘空闲块进行管理。

  文件卷的目录区中专门用一个磁盘块作为“超级块”,当系统启动时需要将超级块读入内存。并且要保证内存与外存中的“超级块”数据一致。

image-20240317203509839

image-20240317203615245

如何分配?

Eg:需要1个空闲块。

①检查第一个分组的块数是否足够。1<100,因此是足够的。

②分配第一个分组中的1个空闲块,并修改相应数据。

image-20240317204101434

Eg:需要100个空闲块。

①检查第一个分组的块数是否足够。100=100,是足够的。

②分配第一个分组中的100个空闲块。但是由于300号块内存放了再下一组的信息,因此300号块的数据需要复制到超级块中。

image-20240317204250955

image-20240317204309732


如何回收?

Eg:假设每个分组最多为100个空闲块,此时第一个分组已 有99个块,还要再回收一块。

image-20240317204444030

Eg:假设每个分组最多为100个空闲块,此时第一个分组已有100个块,还要再回收一块。

  需要将超级块中的数据复制到新回收的块中,并修改超级块的内容,让新回收的块成为第一个分组。

image-20240317204531528

image-20240317204606822

image-20240317204647351

总结

image-20240317204705847

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

腾讯云企业用户可以申请免费服务器试用吗?

腾讯云企业用户可以申请免费服务器试用吗&#xff1f;可以的&#xff0c;腾讯云免费服务器申请入口 https://curl.qcloud.com/FJhqoVDP 免费服务器可选轻量应用服务器和云服务器CVM&#xff0c;轻量配置可选2核2G3M、2核8G7M和4核8G12M&#xff0c;CVM云服务器可选2核2G3M和2核…

拌合楼内部管理系统开发(三) 继续功能模块及数据表设计-收发管理模块(无人值守功能)

前言:继续闭门造车 继续发挥,上一篇写到了生产管理,今天开始做无人值守的功能模块的设计了.核心就是收发管理的模块了. 一、发货的工作流程&#xff1a; 我设想的发货流程如下&#xff1a; 1. 发货的源头指令来源于生产计划&#xff1a; 生产计划要素是需要生产的产品&#xff…

解决google Chorme 隐私设置错误

问题&#xff1a; 我们在使用浏览器的时候&#xff0c;出现隐私设置错误“您的链接不是私密连接”&#xff0c;如下图所示&#xff1a; 第一步开始来解决隐私设置错误&#xff0c;打开浏览器之后&#xff0c;点击右上方的三点图标&#xff0c;选择设置&#xff0c;如下图所示&…

基于支持向量机SVM的沉降预测,SVM详细原理,Libsvm详解

目录 支持向量机SVM的详细原理 SVM的定义 SVM理论 Libsvm工具箱详解 简介 参数说明 易错及常见问题 完整代码和数据下载链接:基于支持向量机SVM的沉降预测资源-CSDN文库 https://download.csdn.net/download/abc991835105/88947544 SVM应用实例,基于支持向量机SVM的沉降预测…

MYSQL报 - Lock wait timeout exceeded; try restarting transaction

前言 今天在使用数据库编辑数据时&#xff0c;页面突然卡主&#xff0c;退出程序后重新编辑&#xff0c;发现报错&#xff0c;1205 - Lock wait timeout exceeded&#xff1b; try restarting transaction&#xff08;如下图&#xff09;&#xff0c;正巧在和同事开会&#xf…

基于Springboot和Redis实现的在线选课系统

1.项目简介 1.1 介绍 毕业设计真的就是demo吗&#xff1f;作为工作前的最后一个校园项目&#xff0c;毕业设计应当尽可能的贴近企业实战&#xff0c;业务不必很复杂&#xff0c;但要做到麻雀虽小五脏俱全。本期学长跟大家一起分享如何开发一个在线选课系统&#xff0c;需求也…

如何实现队列和栈的转化(c语言)

文章目录 一.什么是栈二.什么是队列三.怎么把栈变成队列&#xff08;力扣&#xff09;四.怎么把队列变成栈&#xff08;力扣&#xff09;总结 一.什么是栈 栈&#xff08;stack&#xff09;又名堆栈&#xff0c;它是一种运算受限的线性表。限定权在表尾进行插入和删除操作的线性…

从政府工作报告中的IT热词统计探计算机行业发展(二)人工智能+:3次

政府工作报告作为政府工作的全面总结和未来规划&#xff0c;不仅反映了国家整体的发展态势&#xff0c;也为各行各业提供了发展的指引和参考。随着信息技术的快速发展&#xff0c;计算机行业已经成为推动经济社会发展的重要引擎之一。因此&#xff0c;从政府工作报告中探寻计算…

嵌入式学习39-程序创建数据库及查找

1.sqlite3_open int sqlite3_open( const char *filename, /* Database filename (UTF-8) */ sqlite3 **ppDb /* OUT: SQLite db handle */ ); 功能: 打开 数据库文件(创建一个数据库连接) 参数: filename: …

顺序表操作

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd;既然选择了远方&#xff0c;当不负青春…

腾讯云免费服务器配置大全和个人企业申请流程,2024年新版教程

腾讯云免费服务器申请入口 https://curl.qcloud.com/FJhqoVDP 免费服务器可选轻量应用服务器和云服务器CVM&#xff0c;轻量配置可选2核2G3M、2核8G7M和4核8G12M&#xff0c;CVM云服务器可选2核2G3M和2核4G3M配置&#xff0c;腾讯云服务器网txyfwq.com分享2024年最新腾讯云免费…

力扣爆刷第98天之hot100五连刷76-80

力扣爆刷第98天之hot100五连刷76-80 文章目录 力扣爆刷第98天之hot100五连刷76-80一、295. 数据流的中位数二、121. 买卖股票的最佳时机三、55. 跳跃游戏四、45. 跳跃游戏 II五、763. 划分字母区间 一、295. 数据流的中位数 题目链接&#xff1a;https://leetcode.cn/problems…

最后的挣扎 - Qt For Android on HuaWei Mate 60Pro (v4.0.0)

简介 为什么叫最后的挣扎, 其实都知道即将到来的 HarmonyOS NEXT 将抛弃Android支持&#xff0c;纯血HarmonyOS 将上线&#xff0c; 此时再说Qt for android支持Huawei HarmonyOS的设备其实并没有多少意思&#xff0c; 但恐怕在大多数基础软件完成兼容前&#xff0c; 很多人还是…

avue-crud顶部操作按钮插槽;avue-crud列数据插槽;avue-crud行操作按钮插槽

1.avue-crud顶部操作按钮插槽&#xff1b; <template slot"menuLeft" slot-scope"{ size }"><div class"left"><div class"btn"><el-button type"primary" size"small" click"onBatchR…

[Python初阶]2255.统计是给定字符串前缀的字符串数目

目录 2255.统计是给定字符串前缀的字符串数目 ①.题目 ②.问题分析 ③.startswith()方法理解 与 说明 Ⅰ.定义和用法 Ⅱ.语法 ④.问题解决 ⑤总结 2255.统计是给定字符串前缀的字符串数目 ①.题目 ②.问题分析 需求:统计列表words中,是字符串s的前缀的字符串的数目. 解…

无人机自动返航算法实现与优化

一、引言 随着无人机技术的快速发展&#xff0c;其在航拍、农业、救援等领域的应用越来越广泛。在这些应用中&#xff0c;无人机的自动返航功能显得尤为重要。一旦无人机失去控制或与遥控器失去连接&#xff0c;自动返航算法能够确保无人机安全返回起飞点&#xff0c;避免损失和…

echarts实践总结(常用二):折线图(特点:渐变、面积区域)

目录 第一章 echarts基本使用 第二章 echarts实践——折线图 效果展示 第一章 echarts基本使用 Echarts常用配置项(详细入门)_echarts配置项手册-CSDN博客 柱状图案例&#xff1a; echarts实践总结(常用一)&#xff1a;柱状图&#xff08;特点&#xff1a;渐变色、点击缩放、…

[嵌入式系统-42]:内存管理MMU与TLB-1-内存管理全方位概览

目录 一、内存管理的概述 1.1 内存管理的类比 1.2 内存管理的目标 1.3 计算机有哪些基本的资源 1.4 什么是内存管理 1.5 内存管理的主要目标&#xff1a;内存复用 二、内存管理的主要目标详解 2.1 提高内存利用率 2.2 合理的内存分配和释放机制 2.2.1 概述 2.2 定期…

蓝桥杯刷题 Day36 倒计时26天 纯练题的一天

[蓝桥杯 2022 省 B] 积木画 题目描述 小明最近迷上了积木画&#xff0c;有这么两种类型的积木&#xff0c;分别为 I 型&#xff08;大小为 2个单位面积) 和 L 型 (大小为 3 个单位面积): 同时&#xff0c;小明有一块面积大小为2N 的画布&#xff0c;画布由2N 个 11 区域构成。…

Kubectl常用命令

管理资源&#xff08;查看、创建、更新、删除&#xff09; 查看node资源 kubectl get nodes查看命名空间 kubectl get ns查看service资源 -n 指明所属的命名空间&#xff0c;不写默认看命名空间为default下的所有service kubectl get svc -n default查看pod资源 -n 指明所…