最先适应分配算法 c语言,计算机操作系统 在可变分区管理方式下采用最先适应算法实现主存分配与回收.docx...

计算机操作系统 在可变分区管理方式下采用最先适应算法实现主存分配与回收

组号 成绩

计算机操作系统课程设计报告 题目 实验3 内存管理 在可变分区管理方式下采用最先适应算法实现主存分配与回收

专 业: 计算机科学与技术班 级: 2014级2班 学号+姓名: 20141308039 王小琴指导教师: 赵晓平

2016年12月 22日

设计目的掌握可变分区内存管理方式,能熟练运用内存管理的各种算法对内存进行分配和回收。设计内容选择一种算法在可变分区管理方式下对内存进行管理。设计原理最先适应算法分配主存空间是按照作业的需要量,查空闲分区表,顺序查看长度栏,找到第一个能满足要求的空闲区。当空闲区大于需要量时,一部分用来装入作业,另一部分在空闲分区表中仍为空闲区。当一个作业执行结束撤离时,作业所占的区域应该归还,归还的区域如果与其它空闲区相邻,则应合成一个较大的空闲区,登记在空闲分区表中。详细设计及编码模块分析作业进入内存:根据作业大小,使用最先适应算法,从低地址空闲分区中依次判断是否有满足作业大小的空闲分区,若有则分配内存,修改空闲分区表,若无则不分配内存,提示没有合适空间,最后都输出空闲分区表情况。作业撤出内存:根据作业起始地址和大小,判断该作业上下是否相邻空闲分区,若只有上邻空闲分区,则释放内存后与其上邻空闲分区合并,若只有下邻空闲分区,则释放内存后与其下邻空闲分区合并,若上下都相邻空闲分区,则释放内存后与其上、下邻空闲分区都合并,若不相邻空闲分区,则释放内存后在空闲分区表内单独形成一个分区,最后输出空闲分区表情况。

流程图开始

输出初始空闲分区表

作业进入内存

需求量

N

需求量=分区表大小 N

Y

没有合适空间修改分区表的起始地址和大小删除该分区表

输出空闲分区表情况

作业撤出内存

是否有上邻空闲区 N

是否有下邻空闲区 Y是否有下邻空闲区

N Y N Y 合并上邻空间生成新空闲分区合并下邻空间合并上、下邻空闲分区

输出空闲分区表情况

结束

代码实现#include #include #define N 3 //空闲区和空表目总块数

struct free { int start; //空闲分区始址 int size; //空闲分区长度int state; //标志位,1表示未分配,0表示分空表目 };free free[N]={{14,12,1},{32,96,1},{128,120,0}};//初始化空闲分区

//给作业分配主存空间函数int alloc(int n) //为作业分配内存,满足返回1,不满足返回0 { int i,flag=0;//用来标识是否有满足作业的空闲空间,1表示有,0表示无 for(i=0;in)//空闲区空间大于作业需求 { free[i].start=free[i].start+n; free[i].size=free[i].size-n; flag=1; return 1; } if(free[i].state==1 && free[i].size==n)//空闲分区刚好满足作业需求 { free[i].state=0; //调整状态位 flag=1; return 1; } }if(flag==0)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值