连续分配管理方式

连续分配管理方式

image

补充:

非连续分配管理方式:

  1. 基本分页存储管理
  2. 基本分段存储管理
  3. 段页式存储管理

一、前言

对于内存来说:

  • 内部碎片:已经被分配出去(能明确指出属于哪个进程)却不能被利用的内存空间
  • 外部碎片:还没有被分配出去(不属于任何进程),但由于太小了无法分配给申请内存空间的新进程的内存空闲区域

二、单一连续分配

image

内存被划分为系统区用户区

  1. 系统区:通常位于内存的低地址部分,存放操作系统相关数据。
  2. 用户区:存放用户进程相关数据。

内存中只能有一道用户程序,用户程序独占整个用户区空间。

  • 优点:

    • 无外部碎片;
    • 实现简单;
    • 可以使用覆盖技术扩充内存;
    • 不一定需要采取内存保护(eg: 早期的 PC 操作系统 MS-DOS )
  • 缺点:

    • 有内部碎片;
    • 只能用于单用户、单任务的操作系统中;
    • 存储器利用率极低。

三、固定分区分配

image

将整个用户空间划分为若干个固定大小的分区,在每个分区中只装入一道作业。

image

  • 优点:

    • 无外部碎片
    • 实现简单
  • 缺点:

    • 会产生内部碎片,内存利用率低
    • 当用户程序太大时,可能所有的分区都不能满足需求,此时不得不采用覆盖技术来解决,但这又会降低性能

(一)分区大小相等

缺乏灵活性,但是很适合用于用一台计算机控制多个相同对象的场合(比如:钢铁厂有 n 个相同的炼钢炉,就可把内存分为 n 个大小相等的区域存放 n 个炼钢炉控制程序)

(二)分区大小不等

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

四、动态分区分配(可变分区分配)

这种分配方式不会预先划分内存分区,而是在进程装入内存时,根据进程的大小动态地建立分区,并使分区的大小正好适合进程的需要。因此系统分区的大小和数目是可变的。

如果内存中空闲空间的总和本来可以满足某进程的要求,但由于进程需要的是一整块连续的内存空间,因此这些“碎片”不能满足进程的需求。但可以通过紧凑(拼凑,Compaction )技术来解决外部碎片。

(一)系统要用什么样的数据结构记录内存的使用情况?

image

(二)当很多个空闲分区都能满足需求时,应该选择哪个分区进行分配?

按照一定的动态分区分配算法(见下一节)。

(三)如何进行分区的分配与回收操作?

回收内存分区时分四种情况(相邻的空闲分区合并):

image

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

覆盖与交换

覆盖与交换 ‍ ​​ ‍一、覆盖技术 (一)思想 将程序分为多个段(多个模块)。常用的段常驻内存,不常用的段在需要时调入内存。 (二)实现 将内存分为一个“固定区”和若干个“覆盖区”。 需要常驻内存的段放在“固定区”中,调入后就不再调出(除非运行结束) 不常用的段放…

Qt支持RKMPP硬解的视频监控系统/性能卓越界面精美/实时性好延迟低/录像存储和回放/云台控制

一、前言 之前做的监控系统,已经实现了在windows上硬解码比如dxva2和d3d11va,后续又增加了linux上的硬解vdpau的支持,这几种方式都是跨系统的硬解实现方案,也是就是如果都是windows系统,无论X86还是ARM都通用,在系统层面屏蔽了实现细节,按照规范来写就行,这种方式叫跨硬…

20222313 2024-2025-1 《网络与系统攻防技术》 实验五实验报告

1. 实验内容 1.1 实验要求 (1)从www.besti.edu.cn、baidu.com、sina.com.cn中选择一个DNS域名进行查询,获取相关信息。 (2)尝试获取BBS、论坛、QQ、MSN中某一好友的IP地址,并查询获取该好友所在的具体地理位置。 (3)使用nmap开源软件对靶机环境进行扫描,回答以下问题并…

多协议兼容:开启跨网文件传输的新纪元!

金融、医疗、政府单位、跨国公司等企业内部往往存在多个隔离的网络环境,如内网、外网、测试网等。随着数字化办公的深入,内网与内网、内网与外网间的文件交换需求频繁,传统的文件传输方式已无法满足安全、合规的文件交换需求。1、跨国公司在不同地区运营时,需要安全、高效地…

Odoo和其他SprinBoot框架同时存在时时区问题

因为Centos的停更以及Odoo版本升级后更加友好的支持了Ubuntu所以发布Odoo服务使用了Ubuntun系统环境,因为Odoo为国外人开发所以他们默认代码中处理了跨时区的问题,便于在国内可以友好显示,但是我还不能手动去调时区,要不然就的处理Odoo的源代码了,可是我还有另一个MySQL的…

请问PbootCMS模板调用当前栏目的文章和分页

#### 调用当前栏目的文章 ```html {pboot:list num=10 scode={sort:scode} page=0}<li><a href="[list:link]">[list:title lencn=20]</a></li> {/pboot:list}扫码添加技术【解决问题】专注中小企业网站建设、网站安全12年。熟悉各种CMS,精…

帝国CMS导入恢复数据MySQL server has gone away错误的解决办法

问题原因: max_allowed_packet 配置值过小。 解决方案:Windows/Linux:在 my.ini 或 my.cnf 文件中添加或修改:max_allowed_packet=150M保存后重启MySQL服务。扫码添加技术【解决问题】专注中小企业网站建设、网站安全12年。熟悉各种CMS,精通PHP+MYSQL、HTML5、CSS3、Javascri…

Pwn buuctf 合集

持续更新中堆考点:checksec 检查保护:菜单题目依次检查各功能,简单逆向一下。在 Add 中发现使用 calloc,只能控制申请大小:

【人人都能学得会的NLP - 文本分类篇 02】使用DL方法做文本分类任务

【人人都能学得会的NLP - 文本分类篇 02】使用DL方法做文本分类任务 NLP Github 项【人人都能学得会的NLP - 文本分类篇 02】使用DL方法做文本分类任务NLP Github 项目:NLP 项目实践:fasterai/nlp-project-practice 介绍:该仓库围绕着 NLP 任务模型的设计、训练、优化、部署…

第九章课后习题

习题9.2点击查看代码 import numpy as np from scipy.stats import norm, chi2, chisquare import pylab as pltn = 50; k = 6 a = np.loadtxt(ti9.2.txt).flatten() mu = a.mean(); s = a.std(ddof=1) x1 = a.min(); x2 = a.max() x = np.linspace(14.55, 15.55, k) bin = np.…

2024年各编程语言运行100万个并发任务需要多少内存?

你还记得2023年那篇比较各种流行编程语言异步编程内存消耗比较的文章吗? 现在是2024年底,我很好奇在一年时间里,随着各种语言的最新版本发布,情况有什么变化。 让我们再次进行基准测试,看看结果! 基准 用于基准测试的程序与去年相同:让我们启动 N 个并发任务,每个任务等…

用星球助手导出帖子的手把手教程

当我们把星球的帖子下载到本地电脑之后, 如果想要导出成PDF或者Word之类的格式进行学习, 该怎么弄呢? 其实也是相当简单的. 到"搜索"模块里, 选择"帖子", 输入关键词后者留空都可以, 点击"搜索", 在出现的帖子的右上角有三个图标, 从左到右分别…