内存的分配与回收实验报告.docVIP

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE PAGE 1 实验报告 专业 网络工程 班级 08102班 学号 01号 姓名 胡双双 课程名称 操作系统 学年2010-2011 学期 下 课程类别 专业必修 ■限选□任选□实践□ 实验时间 2010年12 月9 日 实验名称 实验三:内存分区与回收 实验目的和要求 全面理解内存分配的三种方法及回收,掌握解决该问题的算法思想。 实验软硬件要求 Pentium(R) Dual-Core CPU 3.2M内存 WINDOWS XP Professional Visual C++6.0 实验内容、方法和步骤 问题描述:初始化一内存空间,要求用最先适应算法、最优适应算法及最坏适应算法实现动态分配内存,并可进行回收。 功能要求:可对内存进行分区,回收及打印,用户可选择最先适应算法、最优适应算法及最坏适应方法三种算法对内存进行分配。 实验结果: 见截图 小结 此次实验的难点是内存的回收及动态分配问题,三个分区的算法相对来说简单一点,设计者必须考虑内存回收时,上为空闲区,下为空闲区,上下都为空闲区及上下都不为空闲区四种情况。 动态分区的基本思想是先初始化一空闲内存空间为1024,然后动态对其进行分区,分区的过程中可选择是按首次适应算法、最优适应算法或者最坏适应算法进行分配,动态分区过程中,可以边分配边回收。 在设计过程中,还要注意一些细节问题,比如在分配内存时,工作名不能重复,否则可能导致打印时混淆重复的内存区,所以,本实验中,用pdname()函数来进行判定是否重名。 评定成绩:      批阅教师:          年  月  日 一、问题概述 初始化一内存空间,要求可对内存进行分区,回收及打印,用户可选择最先适应算法、最优适应算法及最坏适应方法三种算法对内存进行分配。 二、设计流程图 (1)首次适应算法(first_fit)流程图 开 开 始 比size大的空内存 结 束 Y i没有超过终值 Y 待进入的内存进入空内存区 将剩下的内存独立为空内存块 N N 没有找到比要分配的大的内存快,分配失败 (2)最优适应算法(best_fit)流程图 开 始 查找大于size的空闲空间 将其分区号存入id大小存入min 空闲区大小小于min 将空闲区分割,一部分分配给size,一部分为空闲区 结 束 Y i没有超过极值 寻找比size大的空闲区 Y Y 空闲区空间=申请空间 将空闲区直接分配给size N N N (3)最坏适应算法(worst-_fit)流程图与最佳适应算法类似 (4)内存回收流程图 开 始 开 始 判断空闲区上下内存情况 上为空 将上面的空闲区合并,并回收 下为空 将下面的空闲区合并,并回收 上下都为空 将上下的空闲区合并,并回收 上下都不为空 直接将其回收 结 束 三、数据定义 struct used_table { int ID;//分区号 char WorkName;//工作名 int WorkSize;//工作空间 int address;//开始地址 bool state;//状态0表示未分配 1表示已分配 }J[100]; void Init(); int search(); int pdname(char c); void print(); void begin(); int first_fit(char c,int i); int best_fit(char c,int i); int worst_fit(char c,int i); void reclaim(); int free(char c); 四、源程序 #include iostream.h void Init(); int search(); int pdname(char c); void print(); void begin(); int first_fit(char c,int i); int best_fit(char c,int i); int worst_fit(char c,int i); void reclaim(); int free(char c); struct used_table { int ID;//分区号 char WorkName;//工作名 int WorkSize;//工作空间 int address;//开始地址 bool state;//状态0表示未分配 1表示已分配 }J[100]; void Init() //主存表的初始化 { J[0].ID=1; //分区号 J[0].address =0;

文档评论(0)

ligennv1314 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档