采用首次适应算法地动态分区分配模拟课程设计实验报告材料的.docVIP

采用首次适应算法地动态分区分配模拟课程设计实验报告材料的.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实用标准文案 精彩文档 1 需求分析 1)本程序要求实现对内存的动态分配与回收的模拟,同时,在内存的分配时还必须使用首次适应算法,最后,还要显示内存块分配和回收后空闲内存分区链的情况。 2)要实现对作业的内存分配,首先要有一个对作业进行创建和分配内存的模块,其中,该模块在分配内存时要使用首次适应算法;要实现对内存的回收,要有一个内存回收的模块,其中,该模块在回收内存时要考虑内存回收的四种情况;最后,还要有一个能显示内存空闲分区链的情况的模块。 2 概要设计 1)首次适应算法的结构如图1: 图1 首次适应算法的结构图 从链首开始顺序查找 从链首开始顺序查找 空闲分区链完否? 返 回 分区大小所需大小? 分区大小-所需大小= 不可再分割大小? 从该分区中划出所需大小的新分区 将该整个分区从空闲分区链中移出 将该分区分配给相应的作业,修改有关数据 返 回 Y 继续检索下一个表项 Y N N N Y 2)数据结构: struct Fq { int size,o,no; Fq *before,*next; }; 其中,Fq表示结构体的名字(类型),size表示分区的可用空间大小,o表示该分区的状态(是否已分配),no表示该分区中的作业标志,*before表示该结点的向前指针,*next表示该结点的向后指针。 3)各种函数说明: void alloc(int b,int no,Fq *p); 对作业no进行内存分配的功能函数;其中,参数b表示需求的内存大小,参数no表示作业的编号,参数*p表示空闲分区链的第一个非空结点的指针; void free(Fq *c); 将地址为c的分区的内存回收;其中,参数*c表示要回收内存的结点; void create(Fq *head); 创建新作业的子函数;其中,参数*head表示空闲分区链的链首指针;要配合函数alloc()使用; void cha(Fq *head); 查看内存中的空闲分区链的子函数;其中,参数*head表示空闲分区链的链首指针; void hui(Fq *head); 回收内存的子函数;其中,参数*head表示空闲分区链的链首指针;要配合函数free()使用; 3 运行环境 1)操作系统: Windows XP ( 32位 / DirectX 11 ) 2)电脑: X86 兼容 台式电脑 处理器: 英特尔 Pentium(奔腾) 双核 E5300 @ 2.60GHz 内存: 2 GB 4 开发工具和编程语言 1)开发工具:Visual C++ 6.0; 2)编程语言:C++语言; 5 详细设计 1)程序结构如图2: 图2 程序结构图 主菜单 主菜单 创建新作业 alloc();内存分配 查看空闲分区链 free();内存回收 程序结束 退出 回收内存空间 2)●主菜单模块: void main()//主函数 { Fq *head=new Fq;head-next=new Fq; head-next-size=MAXSIZE; head-next-o=0; head-next-next=NULL; int choice=0; do { cout请选择你要进行的操作:endl; cout1、创建新作业 2、查看空闲分区链 3、回收内存空间 0、退出endl; cinchoice; switch(choice) { case 1: create(head);break; case 2: cha(head);break; case 3: hui(head);break; case 0: break; default: cout输入错误!endl; } }while(choice!=0); } ●创建新作业模块: void create(Fq *head)//创建作业子函数 { Fq *p=head-next;p-before=head; int no=0,b=0; cout请输入要创建的作业的编号:;cinno; cout请输入作业的需求空间大小:;cinb; alloc(b,no,p); //此处调用功能函数alloc() } ●查看空闲分区链模块: void cha(Fq *head)//查看内存中的空闲分区链的子函数 { Fq *p=head-next;p-before=head; int i=0; cout空闲分区链的情况为:endl; while(p!=NULL) { if(p-o==0) { cout空闲分区++i p-sizeKendl; } p=p

文档评论(0)

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

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

1亿VIP精品文档

相关文档