第四章 文件管理 五、文件存储空间管理

news2025/1/12 8:54:06

目录

一、逻辑结构和物理结构的比较

二、空闲表法

1、磁盘中的空闲块表

2、例子

3、如何回收空闲区间

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

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

③回收区前面是空闲区;

④回收区后面是空闲区;

三、空闲链表法

1、分类

2、空闲盘块链

(1)定义:

(2)如何分配:

(3)如何回收:

(4)优点:

2、空闲盘区链

(1)定义:

(2)如何分配:

(3)如何回收:

(4)优点:

四、位示图法

1、使用矩阵来表示

(1)如何分配:

(2)如何回收:

五、成组链接法

1、定义:

2、超级块:

(1)定义:

3、如何分配:

4、如何回收:

六、总结


一、逻辑结构和物理结构的比较

二、空闲表法

1、磁盘中的空闲块表

2、例子

(1)假设要创建一个占三个磁盘块的文件。

(2)找到起始块号为10的空闲区间有3个空闲块。

(3)存入,并更改空闲块表。

3、如何回收空闲区间

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

增加一个空闲区

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

减少一个空闲区

③回收区前面是空闲区;

不变

④回收区后面是空闲区;

不变

三、空闲链表法

1、分类

2、空闲盘块链

(1)定义:

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

(2)如何分配:

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

(3)如何回收:

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

(4)优点:

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

2、空闲盘区链

(1)定义:

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

(2)如何分配:
  • 若某文件申请K个盘块,则可以采用首次适应、最佳适应等算法,从链头开始检索,按照算法规则找到一个大小符合要求的空闲盘区,分配给文件。
  • 若没有合适的连续空闲块,也可以将不同盘区的盘块同时分配给一个文件,注意分配后可能要修改相应的链指针、盘区大小等数据。
(3)如何回收:
  • 若回收区和某个空闲盘区相邻,则需要将回收区合并到空闲盘区中。
  • 若回收区没有和任何空闲区相邻,将回收区作为单独的一个空闲盘区挂到链尾。
(4)优点:

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

四、位示图法

1、使用矩阵来表示

(1)如何分配:

若文件需要k个块,

  • ①顺序扫描位示图,找到K个相邻或不相邻的“o”;
  • ②根据字号、位号算出对应的盘块号,将相应盘块分配给文件;
  • ③将相应位设置为“1”。
(2)如何回收:
  • ①根据回收的盘块号计算出对应的字号、位号;
  • ②将相应二进制位设为“o”
     

五、成组链接法

1、定义:

  • 空闲表法、空闲链表法不适用于大型文件系统,因为空闲表或空闲链表可能过大。
  • UNIX系统中采用了成组链接法对磁盘空闲块进行管理。
  • 文件卷的目录区中专门用一个磁盘块作为“超级块”,当系统启动时需要将超级块读入内存。并且要保证内存与外存中的“超级块”数据一致。

2、超级块:

(1)定义:

所谓超级块,其实就是一个索引块,它的头存的是下一个超级块的地址,其他存的是空闲块的地址

3、如何分配:

Eg :需要1个空闲块

  • ①检查第一个分组的块数是否足够。1<100,因此是足够的。
  • ②分配第一个分组中的1个空闲块,并修改相应数据。

Eg:需要100个空闲块

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

4、如何回收:

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

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

六、总结

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【顺序栈的表示和实现,顺序栈的初始化,是否为空,清空顺序栈,销毁顺序栈,】

文章目录 一、栈和队列的定义和特点1.1顺序栈的表示和实现1.2顺序栈的基本操作1.2.1顺序栈的初始化1.2.2判断顺序栈是否为空1.2.3清空顺序栈1.2.4销毁顺序栈1.2.5顺序栈的入栈 一、栈和队列的定义和特点 栈和队列是限定插入和删除只能在表的“端点”进行的线性表。 栈是先进后…

【Linux】安装与配置虚拟机及虚拟机服务器坏境配置与连接---超详细教学

一&#xff0c;操作系统介绍 1.1.什么是操作系统 操作系统&#xff08;Operating System&#xff0c;简称OS&#xff09;是一种系统软件&#xff0c;它是计算机硬件和应用软件之间的桥梁。它管理计算机的硬件和软件资源&#xff0c;为应用程序提供接口和服务&#xff0c;并协…

VS搭建32位和64位汇编开发环境

VS搭建32位和64位汇编开发环境 1 VS2017软件安装2 创建汇编工程3 配置X86汇编环境&#xff08;32位&#xff09;4 配置X64汇编环境&#xff08;64位&#xff09;5 调试技巧 本文属于《 X86架构指令基础系列教程》之一&#xff0c;欢迎查看其它文章。 1 VS2017软件安装 安装过…

根据键名解析特定属性的值相关API

mycdev.c #include <linux/init.h> #include <linux/module.h> #include <linux/of.h>struct device_node *node; //解析得到的设备树节点对象指针 struct property *pr; //属性结构体指针 int len; u32 a; u32 b[2]; const char *str; u8 c[6]; static i…

MFI芯片I2C地址转换(写读转7位传入API接口)

是否需要申请加入数字音频系统研究开发交流答疑群(课题组)&#xff1f;可加我微信hezkz17, 本群提供音频技术答疑服务 MFI芯片I2C地址转换(写读转7位传入API接口&#xff09; #define MFI_I2C_CHIP_ADDR 0x10// 芯片写/读 0x20/0x21(写/读) 七位地址 0x10 //zk 使用读地址…

jdbc 对事务的支持

MySQL中默认开启事务自动提交功能&#xff0c;即 每个SQL语句都会自动开启一个事务并提交&#xff0c;如果没有显式地使用COMMIT或者ROLLBACK语句&#xff0c;则所有的修改都将被保存到数据库中。这种情况下&#xff0c;如果某个操作出现错误&#xff0c;就无法回滚事务&#x…

使用Python实现文字的声音播放

winsound 是 Python 的一个内置模块&#xff0c;它提供了访问 Windows 操作系统的声音播放功能的接口。这个模块可以用来播放简单的声音&#xff0c;例如提示音或者短促的音效。 # Author : 小红牛 # 微信公众号&#xff1a;WdPython import win32com.client import winsound#…

【已解决】axios post请求body为字符串

文章目录 现在需要的参数格式正常post请求参数 解决方法代码示例axiosfetch![在这里插入图片描述](https://img-blog.csdnimg.cn/9372f6efae13432896368aa3e25194cf.png) 现在需要的参数格式 正常post请求参数 解决方法 修改 Content-Type 为 text/plain 参数直接给一个字符串…

RT-Thread 8. RT-Thread Studio arm-gcc使用10.2.1编译

1. gcc编译器下载 E:\RT-ThreadStudio\repo\Extract\ToolChain_Support_Packages\ARM\GNU_Tools_for_ARM_Embedded_Processors2. 把5.4.1 改为5.4.11 再“全部构建”&#xff0c;提示错误 3. 把工具链版本改为10.2.1&#xff0c;再“全部构建”

如何正确设置Kubernetes的request和limit

有效设置Kubernetes的request和limit对应用程序性能、稳定性和成本有重大影响。然而&#xff0c;在过去的一年里&#xff0c;与许多团队的合作向我们表明&#xff0c;很难确定这些参数的正确值。出于这个原因&#xff0c;我们创建了这个简短指南&#xff0c;以帮助团队更准确地…

leetcode动态规划学习

0-1背包问题 参考&#xff1a; 【动态规划/背包问题】那就从 0-1 背包问题开始讲起吧 ... 内容是学习 宫水三叶的刷题日记 公众号专题内容时的笔记&#xff0c;为了方便个人复习整理到这里。建议大家关注该公众号&#xff0c;写的很清楚&#xff0c;有更多内容。 经典0-1背…

Linux进程等待

Linux进程等待 一.什么是进程等待二.为什么要有进程等待三.怎么进行进程调用1.僵尸进程问题2.waitpid3.获取进程退出状态 一.什么是进程等待 通过系统调用wait和waitpid&#xff0c;来进行对子进程进行状态检测与回收功能。 二.为什么要有进程等待 1。之前讲过&#xff0c;子…

【第25例】IPD体系进阶:需求分析团队RAT

目录 简介 RAT CSDN学院相关内容推荐 作者简介 简介 RAT是英文Requirement Analysis Team英文首字母的简称,也即需求分析团队,每个产品线都需要设定对应的一个RAT的组织。 RAT主要负责产品领域内需求的分析活动,是RMT的支撑团队: 这个时候可以将RAT细化为PL-RAT团队,…

C语言--strcmp函数(介绍与自己实现)

strcmp函数&#xff1a;字符串比较函数。 用法&#xff1a;strcmp(str1,str2)。str1&#xff0c;str2可以是字符串常量或者字符串变量&#xff0c;返回值为整形。 str1小于str2,返回负值&#xff0c;str1等于str2,返回为0&#xff0c;str1大于str2,返回正值 那么两个字符串是…

Ubuntu环境下DOSBOX的配置

【步骤一】 先打开命令行&#xff0c;进入root模式&#xff0c;输入如下语句&#xff1a; sudo apt-get install dosbox 该语句的作用主要是安装dosbox 【步骤二】 安装完成之后&#xff0c;命令行输入dosbox 会进入dosbox页面&#xff1a; 【步骤三】 在你的主机中&…

腾讯云主机服务器什么时候最便宜?

腾讯云主机服务器价格对于许多用户来说是一个重要考虑因素。本文将探讨腾讯云主机服务器的最佳购买时期&#xff0c;并为大家提供一些建议&#xff0c;帮助大家以最优惠的价格购买腾讯云主机服务器。 首先&#xff0c;我们需要了解腾讯云服务器的优惠政策。一般来说&#xff0c…

Games104现代游戏引擎笔记 网络游戏进阶架构

Character Movement Replication 角色位移同步 玩家2的视角看玩家1的移动是起伏一截一截&#xff0c;并且滞后的 interpolation&#xff1a;内插值&#xff0c;在两个旧的但已知的状态计算 extrapolation&#xff1a;外插值&#xff0c;本质是预测 内插值&#xff1a;但网络随着…

用友U8SMSProxy -SQL注入漏洞

0x01 漏洞介绍 用友GRP-U8 R10政务管理软件是由用友政务公司基于云技术所推出的第十代政务产品。这款产品继承了用友R9、R9i、U8等行政事业版产品的各项优点&#xff0c;并融合了全国广大用户的最佳实践应用。它旨在为政府财政部门、社保部门、卫生部门、教育部门、民政部门、党…

phar反序列化

序列化和反序列化的区别&#xff1f; 可参考&#xff1a;【精选】什么是反序列化&#xff1f;反序列化的过程&#xff0c;原理-CSDN博客 通俗的说序列化将对象转化为了字符串&#xff0c;包含了对象的所有数据信息&#xff0c; 反序列化时再根据这些信息还原对象 序列化&…

0026Java程序设计-中学走读生信息管理系统设计与实现

文章目录 摘要**目录**系统设计开发环境 摘要 目前&#xff0c;中学走读生信息管理系统已经发展成为学校的学生走读管理工作中必不可少的一个组成部分&#xff0c;没有该系统&#xff0c;学生的日常工作就会变得繁琐、效率低下。在信息化的社会发展下&#xff0c;有必要建立一…