logo

您所在位置网站首页 > 海量文档  > 计算机 > 数据结构与算法

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

本文档一共被下载: ,您可全文免费在线阅读后下载本文档。

  • 支付并下载
  • 收藏该文档
  • 百度一下本文档
  • 修改文档简介
全屏预览

下载提示

1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
组号 成绩 计算机操作系统 课程设计报告 题目 实验3 内存管理 在可变分区管理方式下采用最先适应算法实现主存分配与回收 专 业: 计算机科学与技术 班 级: 2014级2班 学号+姓名: 20141308039 王小琴 指导教师: 赵晓平 2016年12月 22日 设计目的 掌握可变分区内存管理方式,能熟练运用内存管理的各种算法对内存进行分配和回收。 设计内容 选择一种算法在可变分区管理方式下对内存进行管理。 设计原理 最先适应算法分配主存空间是按照作业的需要量,查空闲分区表,顺序查看长度栏,找到第一个能满足要求的空闲区。当空闲区大于需要量时,一部分用来装入作业,另一部分在空闲分区表中仍为空闲区。当一个作业执行结束撤离时,作业所占的区域应该归还,归还的区域如果与其它空闲区相邻,则应合成一个较大的空闲区,登记在空闲分区表中。 详细设计及编码 模块分析 作业进入内存:根据作业大小,使用最先适应算法,从低地址空闲分区中依次判断是否有满足作业大小的空闲分区,若有则分配内存,修改空闲分区表,若无则不分配内存,提示没有合适空间,最后都输出空闲分区表情况。 作业撤出内存:根据作业起始地址和大小,判断该作业上下是否相邻空闲分区,若只有上邻空闲分区,则释放内存后与其上邻空闲分区合并,若只有下邻空闲分区,则释放内存后与其下邻空闲分区合并,若上下都相邻空闲分区,则释放内存后与其上、下邻空闲分区都合并,若不相邻空闲分区,则释放内存后在空闲分区表内单独形成一个分区,最后输出空闲分区表情况。 流程图 开始 输出初始空闲分区表 作业进入内存 需求量<分区表大小 Y N 需求量=分区表大小 N Y 没有合适空间 修改分区表的起始地址和大小 删除该分区表 输出空闲分区表情况 作业撤出内存 是否有上邻空闲区 N 是否有下邻空闲区 Y 是否有下邻空闲区 N Y N Y 合并上邻空间 生成新空闲分区 合并下邻空间 合并上、下邻空闲分区 输出空闲分区表情况 结束 代码实现 #include <stdio.h> #include <String.h> #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;i<N;i++) { if(free[i].state==1 && free[i].size>n)//空闲区空间大于作业需求 { 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)

发表评论

请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码: 点击我更换图片

“原创力文档”前称为“文档投稿赚钱网”,本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有【成交的100%(原创)】。原创力文档是网络服务平台方,若您的权利被侵害,侵权客服QQ:3005833200 电话:19940600175 欢迎举报,上传者QQ群:784321556