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

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

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机操作系统 在可变分区管理方式下采用最先适应算法实现主存分配与回收

组号 成绩 计算机操作系统 课程设计报告 题目 实验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)

文档评论(0)

xxj1658888 + 关注
实名认证
内容提供者

教师资格证持证人

该用户很懒,什么也没介绍

领域认证该用户于2024年04月12日上传了教师资格证

1亿VIP精品文档

相关文档