连续分配管理方式(单一连续分配 固定分区分配 动态分区分配)

前言

此篇文章是我在B站学习时所做的笔记,大部分图片都是课件老师的PPT,方便复习用。此篇文章仅供学习参考。


提示:以下是本篇文章正文内容

知识总览

在这里插入图片描述
连续分配:指为用户进程分配的必须是一个连续的内存空间

单一连续分配

在这里插入图片描述

重点!!!
MS—DOS 的存储管理采用了单一连续分配方式
只能用于单用户、单任务的操作系统!!! 内存中只能有一道用户程序,用户程序独占整个用户区空间。
缺点:会产生内部碎片

解说
由于整个系统当中同一时刻只会有一个用户程序的运行,所以采用这种分配方式的系统当中,不一定需要采用内存保护,有的系统当中,它也会设置那种越界检查了一些机制,但是像早期的个人操作系统,微软的MS-DOS系统就没有采用这种内存保护的机制,因为系统中只会运行一个用户程序,那么即使这个用户程序出问题了,那也只会影响用户进程本身,或者说即使这个用户程序越界,把操作系统的数据损坏了,那这个数据一般来说也可以通过重启计算机就可以很方便地这进行修复,所以说采用单一连续分配的系统当中,不一定采取内存保护,那这也是它的优点呐,另一方面这个方式的缺点也很明显,就是只适用于单用户,单任务的操作系统,它并不支持多道程序并发运行,并且这种方式会产生内部碎片,那所谓的内部碎片就是指我们分配给某一个进程,或者说程序的内存区间当中,如果有重要部分没有被用上,那这就是所谓的内部碎片,像这个例子当中,本来整个用户区都是分配给这个用户进来的,但是有这么大一块,它是空闲的,暂时没有用起来,那本来给这个进程分配了,但是这个进程没有用上了这一部分内存区就是所谓的内部碎片,所以这个方式也会导致存储器的利用率很低

固定分区分配

在这里插入图片描述
在这里插入图片描述

无外部碎片,会产生内部碎片

动态分区分配

动态分区分配又称为可变分区分配。这种分配方式不会预先划分内存分区,而是在进程装入内存时,根据进程的大小动态地建立分区,并使分区的大小正好适合进程的需要。因此系统分区的大小和数目是可变的。(eg:假设某计算机内存大小为64MB,系统区8MB,用户区共56 MB.….)
在这里插入图片描述

在这里插入图片描述

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

两种数据结构:空闲分区表空闲分区链
在这里插入图片描述

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

在这里插入图片描述

3. 如何进行分区的分配与回收操作?

假设系统采用的数据结构是“空闲分区表”…
如何回收?
空闲分区表为例

分配方式一

在这里插入图片描述

分配方式二

在这里插入图片描述
解说
还是相同的例子,有一个进程五需要4MB(四兆字节),那如果说我们采用了某种分配算法,最后决定把这4M字节的空闲分区分配给进程5,那么本来这个空闲分区(分区号3,分区大小4)的大小,就和此次申请的这个内存空间大小是相同的,所以如果把这个分区空闲分区全部分配给这个进程的话,那么显然空闲分区的数量会-1,所以我们需要把这个分区对应的这个表项给删除,那如果说我们采用的是空闲分区链的话,那我们就是需要把其中的某一个而空闲分区链的节点给删掉。那这是分配的时候可能会遇到的两种情况。

回收情况一:回收区的后面有一个相邻的空闲分区

合并前的分区:
在这里插入图片描述
合并后:
在这里插入图片描述

回收情况二:回收区的前面有一个相邻的空闲分区

合并前:
在这里插入图片描述
合并后:
在这里插入图片描述

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

合并前:
在这里插入图片描述
合并后:
在这里插入图片描述

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

合并前:
在这里插入图片描述
合并后:
在这里插入图片描述

碎片问题

在这里插入图片描述

重点!!!
动态分区分配没有内部碎片,但是有外部碎片。

可以通过紧凑(拼凑,Compaction)技术来解决外部碎片。即将各个进程挪位,挪出一个连续的空闲区域出来👇
在这里插入图片描述

4. 思考动态分区分配应使用哪种装入方式?“紧凑”之后需要做什么处理?

:①显然之前介绍的三种装入方式当中,动态重定位的方式,其实是最方便实现进程在内存当中移动位置这件事,所以我们应该采用的是 动态重定位 的方式。
②紧凑之后,需要各个进程的起始地址给修改掉,进程的起始地址信息一般存放在进程对应的PCB当中,当进程要上CPU运行之前,会把进程的起始地址那个信息放到重定位寄存器里或者叫基址寄存器里。

知识回顾与重要考点

在这里插入图片描述

  • 13
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蜗牛_Chenpangzi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值