存储器管理的内存连续分配方式详解

4.2 连续分配方式

连续分配方式:指为一个用户程序分配一个连续的内存空间
  • 一、单一连续分配方式
  • 二、固定分区分配
  • 三、动态分区分配
  • 四、可重定位分区分配

一、单一连续分配方式

图片1

二、固定分区分配

1、原理

将内存空间划分为若干个固定大小的区域,在每个分区中只装入一道作业,便可以有多道作业并发执行。当有一空闲分区时,便可以再从外存的后备作业队列中,选择一个适当大小的作业装入该分区,当该作业结束时,再从后备作业队列中找出另一作业调入该分区。

2、划分分区的方法

  • 分区大小相等
    所有分区大小相等,缺乏灵活性
  • 分区大小不等
    把内存区划分成含有多个较小的分区、适量的中等分区及少量的大分区

3、实现

图片2

三、动态分区分配(重点!!!)

1、原理

  • 动态分区分配时根据进程的实际需要,动态地为之分配内存空间。作业装入内存时,把可用内存分出一个连续区域给作业,且分区的大小正好合适作业大小的需要。
  • 分区的大小和个数依装入作业的需要而定。

2、实现

在实现过程中涉及如下问题:
  • 分区分配中的数据结构
  • 分区分配算法
  • 分区分配及回收操作

图片3

图片4

分区分配算法

为把一个新作业装入内存,需按照一定的分配算法,从空闲分区表或空闲分区链中选出一分区分配给该作业。

常用的分配算法:
  • (1)首次适应算法
  • (2)循环首次适应算法
  • (3)最佳适应算法
  • (4)最坏适应算法
  • (5)快速适应算法
(1)首次适应算法FF

图片5

(2)循环首次适应算法

图片6

(3)最佳适应算法

图片7

(4)最坏适应算法(worst fit)

图片8

(5)快速适应算法(quick fit)

该算法又称为分类搜索法,是将空闲分区根据其容量大小进行分类,对于每一类具有相同容量的所有空闲分区,单独设立一个空闲分区链表,系统中存在多个空闲分区链表,同时在内存中设立一张管理索引表,该表的每一个表项对应了一种空闲分区类型,并记录了该类型空闲分区链表表头的指针。

分区分配及回收操作

图片9

图片10

回收内存

图片11

四、可重定位分区分配

图片12

图片13

图片14
图片15

五、对换

1、对换的引入
 阻塞进程占据大量内存空间
 许多作业再外存而不能进入内存运行
对换:

把内存中暂时不能运行的进程或暂时不用的程序和数据,调到外存上,以便腾出足够的内存空间,再把已具备运行条件的进程和进程所需的程序还有数据调入内存。

对换的分类:
  • 整体对换(或进程对换):以整个进程为单位
  • 页面对换或分段对换:以页或段为单位
实现进程对换,系统必须具备的功能:
  • 对换空间的管理
  • 进程的换出
  • 进程的换入

图片16

3、进程的换出与换入

  • 进程的换出
    系统首先选择处于阻塞状态且优先级最低的进程作为换出进程,然后启动盘块,将该进程的程序和数据传送到磁盘的对换区上。
  • 进程的换入
    系统应定时查看所有进程的状态,从中找出“就绪”状态但已换出的进程,将换出进程最久的进程作为换入进程,将之换入,直至已无可换入的进程或无可换出的进程为止。

图片17

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
连续存储分配是计算机内存管理中的一种方式,是指将一个程序所需要的所有内存空间连续分配给它。这种管理方式的优点是实现简单,易于操作和管理,但是由于内存分配完全依赖于程序的需求,所以容易导致内存碎片,导致内存的利用率变低。 C语言是一种通用的编程语言,可以用来实现各种不同的程序,包括内存管理程序。实现连续存储分配管理实验需要用到C语言,具体步骤如下: 1. 定义内存块的结构体:包括内存块的起始地址、大小、状态等属性。 2. 实现内存的初始化函数:初始化内存块,并将其状态设置为未分配。 3. 实现内存分配函数:通过循环遍历内存块,查找是否有满足需求的空闲块。 4. 实现内存释放函数:将指定的内存块标记为已释放状态,并合并相邻的空闲块。 5. 实现内存状态显示函数:遍历内存块并显示它们的信息,包括空闲块和已分配块。 在实现过程中,需要注意内存分配算法的选择。常见的算法有首次适应算法、最佳适应算法和最坏适应算法等。其中,首次适应算法是最常用的算法,因为它可以快速找到满足需求的空闲块,而且实现较为简单。 在使用C语言实现连续存储分配管理实验时,需要注意程序的健壮性和性能。在程序中添加必要的检查和错误处理代码,以确保程序的正确运行和稳定性。并且,在内存块数量较大时,需要采用更加高效的算法和数据结构来优化程序性能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

loveCC_orange

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

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

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

打赏作者

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

抵扣说明:

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

余额充值