【软考学习16】用位示图法,轻松解决空闲存储空间的管理难题

简介: 【软考学习16】用位示图法,轻松解决空闲存储空间的管理难题


本文将学习了用位示图法,解决空闲存储空间的管理难题,位示图GIT 贡献度、高铁票务、电影票务等领域有着较多应用场景,我们要学会计算位示图的物理块问题


一、空闲存储空间

磁盘是用来存储程序数据的,存在没有放满的情况,即有空闲存储空间的情况,我们需要将这些空闲存储空间管理起来,以便某个程序需要运行时,给这个程序分配相应的空间

空闲存储空间的管理有四种不同的方法,分别是空闲区表法空闲链表法位示图法成组链接法

1.1 空闲区表法

空闲区表法,使用一张表来记录哪些地方是空闲的,以便把它们管理起来。

1.2 空闲链表法

空闲区表法,把空闲的区块都链起来,链成一张链表,需要分配空间时,根据链表顺序进行遍历,从而分配相应的空间。

1.3 位示图法

最主要的空闲区域管理方法,后面详细介绍。

1.4 成组链接法

对这些空闲的区块,既分组又分链,进行空闲区域管理的方法。


二、位示图法的应用

位示图法的原理,就是画一张位示图,然后图中每个格子表达的区域,用 1 表示该区域已被占用,用 0 表示该区域没被占用

我们将所有的存储空间分成很多个物理块,就能够很直观的看出哪些物理块正在被使用,哪些物理块是空闲的,从而轻松解决空闲存储空间的管理难题。

在开源项目托管网站上,一般都有 GIT 贡献度热力图功能,如下图所示。

这个热力图,代表着过去的每一天,你有没有在提交代码。

如果提交了,那一天的区域显示绿色;反之如果没有提交,那就显示白色。

这其实就是示图法的一个直接应用。


又比如在购买高铁票时,在购票软件中会显示座位图,如下图所示。

对于已被购买的座位,通常用灰色来表示,旅客无法再点击购买。

反之还没被购买的座位,会显示绿色背景,提示旅客可以购买,这也是位示图法在高铁票务场景的一个实际运用。

在高铁票务场景是这样,在电影院,也是一样,也可以用位示图法来解决票务空闲空间的问题。

三、例题

请看下面的例题:

在某个文件管理系统中使用位示图,磁盘的物理块编码从 0 开始编号系统字长 32 位,每一位对应文件存储器上的一个物理块,如下图所示。

假设将 4195 号物理块分配给某文件,那么该物理块使用位示图的第几个字来描述?系统应该将该字的第几个位置置几

首先看到例题中,一个字节占 4 个物理块,第 4195 号物理块(从 0 开始编码)实际上就是我们认为的第 4196 个物理块(我们通常从 1 开始计算)。

所以我们用 4196 / 32,等于 131.125,也等于 131 余 4。

也就是超过 131 了,所以前面 131 个物理块都填满,那么当前占的物理块位置是第 132 个

题目要求将某些物理块占用,并且分配使用,肯定是要置为 1 的。

第 1 到 第 131 个物理块占用了 131 * 32 个位置(4192),即从 0 到 4191

第 132 个物理块的第位置,那就是 4192

第 132 个物理块的第位置,那就是 4193

第 132 个物理块的第位置,那就是 4194

第 132 个物理块的第位置,那就是 4195

所以答案就是将第三位置 置 1

四、总结

本文学习了用位示图法,解决空闲存储空间的管理难题,位示图在 GIT 贡献度、高铁票务、电影票务等领域有着较多应用场景,我们要学会计算位示图的物理块问题


相关文章
|
NoSQL Linux 测试技术
Linux下Redis的安装、配置及开机自启动
Linux下Redis的安装、配置及开机自启动 系统版本: CentOS 7 Redis版本: Redis-6.2.5
47962 7
Linux下Redis的安装、配置及开机自启动
|
数据采集 API 开发工具
项目支付接入支付宝【沙箱环境】
该博客文章详细介绍了如何在PC端项目中接入支付宝支付功能,特别是在沙箱环境中的配置和实现步骤。文章提供了详细的配置指南,包括获取支付宝公钥和私钥、配置沙箱应用环境、生成密钥、设置服务端代码以及调用支付接口等步骤,并附有相应的代码示例和说明。
项目支付接入支付宝【沙箱环境】
|
算法
以太网CSMA/CD协议:通信原理、碰撞检测与退避机制深度解析
以太网CSMA/CD协议:通信原理、碰撞检测与退避机制深度解析
2386 1
|
设计模式 Java 程序员
【23种设计模式·全精解析 | 概述篇】设计模式概述、UML图、软件设计原则
本系列文章聚焦于面向对象软件设计中的设计模式,旨在帮助开发人员掌握23种经典设计模式及其应用。内容分为三大部分:第一部分介绍设计模式的概念、UML图和软件设计原则;第二部分详细讲解创建型、结构型和行为型模式,并配以代码示例;第三部分通过自定义Spring的IOC功能综合案例,展示如何将常用设计模式应用于实际项目中。通过学习这些内容,读者可以提升编程能力,提高代码的可维护性和复用性。
3219 1
【23种设计模式·全精解析 | 概述篇】设计模式概述、UML图、软件设计原则
|
敏捷开发 测试技术
开发模型(瀑布、螺旋、scrum) 和 测试模型(V、W)、增量和迭代、敏捷(思想)及敏捷开发 scrum
文章详细介绍了软件开发过程中的不同开发模型(瀑布、螺旋、Scrum)和测试模型(V模型、W模型),以及增量和迭代的概念,最后阐述了敏捷思想及其在敏捷开发(如Scrum)中的应用。
1983 0
开发模型(瀑布、螺旋、scrum) 和 测试模型(V、W)、增量和迭代、敏捷(思想)及敏捷开发 scrum
|
架构师 安全 程序员
软考资料-分享
本文提供了计算机软考资源分享,包括高级、中级和初级三个层次的专业课程。高级课程如系统架构师、网络规划设计师等,中级课程如网络工程师、数据库系统工程师等,初级课程如网络管理员、程序员等,覆盖了多种专业方向,适合不同水平的学习者。
7573 0
|
存储 JavaScript 前端开发
Node 版本控制工具 NVM 的安装和使用(Windows)
本文介绍了NVM(Node Version Manager)的Windows版本——NVM for Windows的安装和使用方法,包括如何安装Node.js的特定版本、列出已安装版本、切换使用不同版本的Node.js,以及其他常用命令,以实现在Windows系统上对Node.js版本的便捷管理。
Node 版本控制工具 NVM 的安装和使用(Windows)
|
缓存 分布式计算 资源调度
MapReduce入门(一篇就够了)
MapReduce入门(一篇就够了)
10491 1
MapReduce入门(一篇就够了)
|
存储 索引
软考--操作系统之文件系统多级索引
软考--操作系统之文件系统多级索引
|
人工智能 Linux 开发工具
魔搭社区GGUF模型怎么玩!看这篇就够了
近期,Qwen2系列模型家族发布了系列GGUF格式模型。通过llama.cpp/Ollama等生态的发展,很多大语言模型都支持GGUF格式,极大地简化了大语言模型的应用流程,让即便是模型领域的初学者,只有一台CPU笔记本,也能轻松上手顶尖的AI技术。

热门文章

最新文章