当前位置:   article > 正文

基于C语言的存储器的分配与回收算法实现_用c语言编写最佳适应算法实现内存块的分配和回收

用c语言编写最佳适应算法实现内存块的分配和回收

资源下载地址:https://download.csdn.net/download/sheziqiong/85697657
资源下载地址:https://download.csdn.net/download/sheziqiong/85697657

存储器的分配与回收算法实现

实验要求:

  1. 本实验是模拟操作系统的主存分配,运用可变分区的存储管理算法设计主存分配和回收程序,并不实际启动装入作业。

  2. 采用最先适应法、最佳适应法、最坏适应法分配主存空间。

  3. 当一个新作业要求装入主存时,必须查空闲区表,从中找出一个足够大的空闲区。若找到的空闲区大于作业需要量,这是应把它分成二部分,一部分为占用区,另一部分又成为一个空闲区。

  4. 当一个作业撤离时,归还的区域如果与其他空闲区相邻,则应合并成一个较大的空闲区,登在空闲区表中。

    5.运行所设计的程序,输出有关数据结构表项的变化和内存的当前状态。

实验任务:

分别用 线性表 和 链表 模拟 主存空间的分配

步骤:

(1)最先适应法:在分配内存时,从链首开始顺序查找;如果找到一个大小能满足要

的空闲分区,然后再按照作业的大小,从分区中划出一块内存空间分配给请求者,余下的空闲分区仍留在空闲链中;如果找不到,此次分配失败,返回

最佳适应法:扫描整个空闲分区表或者链表,挑选一个最小的空闲区分割给作业使用

最坏适应法:扫描整个空闲分区表或者链表,挑选一个最大的空闲区分割给作业使用

(2)分配内存时:若分割后的多余部分太小,可以不用分割,直接将整个分区分配给进程

回收内存时:1.若回收区与插入点的前一个空闲分区 F1 相邻接,则将两者合并,同时修改 F1 的大小为两者大小的和

2.若回收区与插入点的后一个空闲分区 F2 相邻接,则将两者合并,使用回收区的首址作为新空闲区的首址,大小为两者大小的和

3.若回收区与 F1、F2 邻接,此时将三个分区合并,使用 F1 的表项和 F1 的首址,取消 F2 的表项,大小为三者之和

4.若回收区 既不与 F1 邻接,也不与 F2 邻接, 此时为回收区单独建立一个新表项,填写回收区的首址和大小,并根据首址插入到适当位置

(3)依次输入一个进程的请求信息后,按照指定的方法对这个 PCB 进行分配,逐步输出模拟内存分配的状态,进行查看

(4)设计测试数据,分析程序运行情况,并进行调试

算法描述:

(1)输入指定的分配方法(1.最先适应法,2.最佳适应法,3.最坏适应法)

(2)i=0; 同时输入时间数 n

(3)i++; 同时输入一个进程的请求信息

(4)按照指定的方法对 这个进程 进行内存分配

(5)显示内存状态

(6)若 i==n,结束。否则转到(3)

流程:

测试结果:

最先适应法:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sGhZvfpQ-1655643561260)(https://www.writebug.com/myres/static/uploads/2022/6/19/99a7d0af274cd303692cfdc06cced464.writebug)]

最佳适应法:

在这里插入图片描述

在这里插入图片描述

最坏适应法:

资源下载地址:https://download.csdn.net/download/sheziqiong/85697657
资源下载地址:https://download.csdn.net/download/sheziqiong/85697657

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/625187
推荐阅读
相关标签
  

闽ICP备14008679号