连续分配管理方式-第四十三天

目录

前言

单一连续分配

固定分区分配

分区大小相等

分区大小不等

分区说明表

动态分区分配

问题

用什么样的数据结构记录内存的使用情况

应该选择哪个分区进行分配

分区的分配与回收操作

分配

回收

结论

本节思维导图


前言

连续分配指为用户进程分配的必须是一个连续的内存空间

单一连续分配

基本概念:在单一连续分配方式中,内存被分为系统区(通常位于内存的低地址部分,用于存放操作者系统的相关数据)和用户区(用于存放用户进程相关数据)

注意事项:内存中只能有一道用户数据(不支持并发),用户程序独占整个用户区空间

优点:

  1. 实现简单
  2. 无外部碎片
  3. 可以采用覆盖技术扩充内存
  4. 不一定需要采用内存保护

缺点:

  1. 只能用于单用户、单任务的操作系统中
  2. 有内部碎片
  3. 存储器利用率低

固定分区分配

历史背景:20世纪60年代出现了支持多道程序的系统,为了能在内存中装入多道程序,且这些程序之间又不会相互干扰,于是将整个用户空间划分为若干个固定大小的分区,在每个分区中只装入一道作业,这样就形成了最早的、最简单的一种可运行多道程序的内存管理方式

分区大小相等

优点:很适合于用一台计算机控制多个相同对象的场合(所需内存大小相同)

缺点:缺乏灵活性

分区大小不等

优点:增加灵活性,可以满足不同大小的进程需求,根据常在系统中运行的作业大小情况进行划分(可以划分为小分区、适量中等分区、少量大分区)

缺点:缺乏灵活性,内存碎片

分区说明表

目标:实现各个分区的分配与回收

基本概念:每个表项对应一个分区,通常按照分区大小排列,每个表项对应分区的大小、起始地址、状态(是否已分配)

当用户程序要装入内存时,由操作系统内核程序根据用户程序大小检索该表,从中找到一个能满足大小的、系统分配的分区,将之分配给该程序,然后修改状态为”已分配“

优点:

  1. 实现简单
  2. 无外部碎片(10MB放进12MB大小的空间中,只占用了该空间,其它空间都不占用)

缺点:

  1. 当用户程序太大时,可能所有分区都不能满足需求,此时不得不采用覆盖技术来解决,但这又会降低性能
  2. 会产生内部碎片(10MB放进12MB大小的空间中,该空间中多余的2MB内存空余)
  3. 内存利用率低

动态分区分配

基本概念: 不会预先划分内存分区,而是在进程装入内存时,根据进程的大小动态地建立分区,并使用分区地大小正好适合进程地需要,因此系统分区的大小和数目是可变的

问题

  1. 系统要用什么样的数据结构记录内存的使用情况
  2. 当很多个空闲分区都能满足需求时,应该选择哪个分区进行分配
  3. 如何进行分区的分配与回收操作

用什么样的数据结构记录内存的使用情况

空闲分区表:每个空闲分区对应一个表项。表项中包含分区号、分区大小、分区起始地址等信息

空闲分区链:每个分区的起始部分和末尾部分分别设置前驱指针和后继指针。起始部分处还可记录分区大小等信息

应该选择哪个分区进行分配

分区的分配与回收操作

分配

1、空闲分区表中某一块分区的分区大小大于进程需要的空间大小:

只需通过算法将某块分区中的部  分空间划分给该进程即可,然后在分区表中更新该分区大小以及起始地址

2、空闲分区表中某一块分区的分区大小等于进程需要的空间大小:

将分配出去的某块空间从分区表中删除即可

回收

1、回收区后面有一个相邻的空闲分区:

将两个相邻的空闲分区合并为一个新的空闲分区,并更新分区表的分区大小和起始地址

2、会收区的前面有一个相邻的空闲分区: 

 将两个相邻的空闲分区合并为一个新的空闲分区,并更新分区表的分区大小和起始地址

3、回收区的前、后各有一个相邻的空闲分区:

将三个相邻的空闲分区合并为一个新的空闲分区,并更新分区表的分区大小和起始地址

4、回收区的前、后都没有相邻的空闲分区:

新增一个表项(各表项的顺序不一定按照地址·1递增顺序排列。具体的排列方式需要依据动态分区算法来确定)

结论

  1. 动态分区分配没有内部碎片,但是有外部碎片
  2. 内部碎片:分配给某进程的内存区域中,如果有些部分没用用上
  3. 外部碎片:指内存中的某些空闲分区由于太小而难以利用

本节思维导图

~over~

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

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

相关文章

条件随机场 (CRF) 的损失函数以及faiss 的原理介绍

1、条件随机场 (CRF) 的损失函数 条件随机场(CRF)是一种统计建模方法,常用于结构化预测问题,如序列标注、分词和命名实体识别等。在CRF模型中,损失函数用于衡量模型预测的标记序列与真实标记序列之间的差异。CRF的目标…

【Redux】自己动手实现redux和react-redux

1. React提供context的作用 在class组件的世界里,如果后代组件共享某些状态,比如主题色、语言键,则需要将这些状态提升到根组件,以props的方式从根组件向后代组件一层一层传递,这样则需要在每层写props.someData&#…

控制障碍函数(Control Barrier Function,CBF) 二、示例

二、示例 2.1、系统模型 这里我们举一个CBF作者给出的经典示例 我们定义控制输入 u u u 为蓝色车的推力。 p p p 为蓝色车的位置, v v v 为蓝色车的速度, z z z 为蓝色车与黄色车之间的距离, v 0 v_0 v0​ 为黄色车的速度。我们定义系统的…

功能介绍 | 探秘Goby功能世界:点击URL,即刻畅享快速调起之旅!

​​0x01 前言 ​我们从只会点鼠标的猴子到CtrlC,CtrlV来回切换的工具人,但有时候遇到大量需要复制的url界面,真的希望能有一个可以一键整理、一键扫描URL的功能来拯救! 好消息是,Goby从客户端版本2.8.6起,官方引入了…

CAN数据记录仪在新能源车上的应用

随着新能源汽车的快速发展,对车辆安全和性能的要求也越来越高。在新能源车中,液位传感器是必不可少的零部件之一,用于监测电池液位、冷却液位等关键参数。在测试阶段需要工作人员花费大量时间跟车去获取它的CAN数据,从而分析是否有…

web自动化测试从入门到持续集成

在很多刚学习自动化的可能会认为我只需要会运用selenium,我只需要在一个编辑器中实用selenium java编写了一些脚本那么就会自动化了,是真的吗?答案肯定是假的。自动化肯定是需要做到真的完全自动化,那如何实现呢?接着往…

学习Go语言Web框架Gee总结--前缀树路由Router(三)

学习Go语言Web框架Gee总结--前缀树路由Router router/gee/trie.gorouter/gee/router.gorouter/gee/context.gorouter/main.go 学习网站来源:Gee 项目目录结构: router/gee/trie.go 实现动态路由最常用的数据结构,被称为前缀树(Trie树) 关…

MySQL之CRUD,函数与union使用

目录 一.CRUD 1.1.SELECT(查询) 1.2.INSERT(新增) 1.3.UPDATE(修改) 1.4.DELETE(删除) 二.函数 2.1.常见函数 2.1.1.字符函数 2.1.2.数字函数 2.1.3.日期函数 2.2.流程控制函数 2.3.聚合函数 三.union与union all 四…

物流实时数仓:数仓搭建(DWS)一

系列文章目录 物流实时数仓:采集通道搭建 物流实时数仓:数仓搭建 物流实时数仓:数仓搭建(DIM) 物流实时数仓:数仓搭建(DWD)一 物流实时数仓:数仓搭建(DWD&am…

JMeter CSV 参数文件的使用方法

.在 JMeter 测试中,参数化是非常重要的,参数化允许我们模拟真实世界中的各种情况。本文我们将探讨如何在 JMeter 中使用 CSV 参数文件。 创建 CSV 文件 首先,我们需要创建一个逗号分隔的值(CSV)文件,其中…

创建企业邮箱帐户指南:常见问题与解决方法分享

专业的电子邮件地址可以帮助客户识别商务人士,并了解公司给他们发邮件的目的。如果你从事管理、信息技术或人力资源工作,你可能会负责为一个企业建立一个企业邮箱帐户。了解如何为新员工和现有员工设置电子邮件帐户可以帮助您简化公司内部的沟通。 在这篇…

python小工具之弱密码检测工具

一、引用的python模块 Crypto: Python中一个强大的加密模块,提供了许多常见的加密算法和工具。它建立在pyc.ypodome或pyc.ypto等底层加密库之上,为Python程序员提供了简单易用的API,使其可以轻松地实现各种加密功能。 commands…

牵绳遛狗你我他文明家园每一天,助力共建文明社区,基于YOLOv5开发构建公共场景下未牵绳遛狗检测识别系统

遛狗是每天要打卡的事情,狗狗生性活泼爱动,一天不遛就浑身难受,遛狗最重要的就是要拴绳了,牵紧文明绳是养犬人的必修课。外出遛狗时,主人手上的牵引绳更多是狗狗生命健康的一道重要屏障。每天的社区生活中,…

秋招复习之数据结构

目录 前言 1 数据结构分类 2 基本数据类型 3 数字编码 4 字符编码 总结 前言 秋招复习之数据结构,数据结构分类、基本数据类型、字符编码、数字编码等基础知识。 1 数据结构分类 数据结构分为逻辑结构和物理结构。 逻辑结构分为线性数据结构(数组链表…

在word文档中自制代码段样式

附: 在word中插入高亮代码的网站 HighlightCode:https://highlightcode.com/ CodeInWord:http://codeinword.com/ 一、新建代码段样式 点击下拉按钮,选择创建样式,命名为代码段,然后点击修改 点击格式&a…

CSS transition详解

文章目录 属性transition-propertytransition-durationtransition-timing-functiontransition-delaytransition 简写属性 方法Element:transitionrun 事件Element:transitionstart 事件Element:transitionend 事件Element:transit…

数据表示和进制转换

输入计算机的数字、字符、符号等信息必须转换成0、1组合的数据形式才能被计算机接收、存储并进行运算。能够进行算术运算并且得到明确的数值的数据概念的信息叫数值数据,其余的信息成为非数值数据。 权:每位数的数值。 基数:指该进位制中允…

【C初阶——指针2】鹏哥C语言系列文章,基本语法知识全面讲解——指针(2)

崩刃的剑,依旧致命,锈蚀的盾,屹立如初(王者荣耀李信) 本文由睡觉待开机原创,转载请注明出处。 本内容在csdn网站首发 欢迎各位点赞—评论—收藏 如果存在不足之处请评论留言,共同进步&#xff0…

Elasticsearch:结合 ELSER 和 BM25 文本查询的相关搜索

Elastic Learned Spare EncodeR (ELSER) 允许你执行语义搜索以获得更相关的搜索结果。 然而,有时,将语义搜索结果与常规关键字搜索结果相结合以获得最佳结果会更有用。 问题是,如何结合文本和语义搜索结果? 首先,让我…

揭秘Linux软链接:如何轻松创建、删除和修改

揭秘Linux软链接:如何轻松创建、删除和修改 一、简介二、创建软链接三、删除软链接四、修改软链接五、Linux软链接的高级用法六、总结 一、简介 在Linux中,软链接(Symbolic Link)是一种特殊的文件类型,它是一个指向另…