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

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

ID:31930155

大小:143.50 KB

页数:9页

时间:2019-01-28

采用首次适应算法的动态分区分配模拟课程设计实验报告_第1页
采用首次适应算法的动态分区分配模拟课程设计实验报告_第2页
采用首次适应算法的动态分区分配模拟课程设计实验报告_第3页
采用首次适应算法的动态分区分配模拟课程设计实验报告_第4页
采用首次适应算法的动态分区分配模拟课程设计实验报告_第5页
资源描述:

《采用首次适应算法的动态分区分配模拟课程设计实验报告》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、word格式完美整理1需求分析1)本程序要求实现对内存的动态分配与回收的模拟,同时,在内存的分配时还必须使用首次适应算法,最后,还要显示内存块分配和回收后空闲内存分区链的情况。2)要实现对作业的内存分配,首先要有一个对作业进行创建和分配内存的模块,其中,该模块在分配内存时要使用首次适应算法;要实现对内存的回收,要有一个内存回收的模块,其中,该模块在回收内存时要考虑内存回收的四种情况;最后,还要有一个能显示内存空闲分区链的情况的模块。2概要设计1)首次适应算法的结构如图1:图1首次适应算法的结构图从链首开始顺序查找空闲分区链完否?返回分区大小>所需大小?分区

2、大小-所需大小<=不可再分割大小?从该分区中划出所需大小的新分区将该整个分区从空闲分区链中移出将该分区分配给相应的作业,修改有关数据返回Y继续检索下一个表项YNNNY2)数据结构:structFq可编辑版word格式完美整理{intsize,o,no;Fq*before,*next;};其中,Fq表示结构体的名字(类型),size表示分区的可用空间大小,o表示该分区的状态(是否已分配),no表示该分区中的作业标志,*before表示该结点的向前指针,*next表示该结点的向后指针。3)各种函数说明:voidalloc(intb,intno,Fq*p);对作

3、业no进行内存分配的功能函数;其中,参数b表示需求的内存大小,参数no表示作业的编号,参数*p表示空闲分区链的第一个非空结点的指针;voidfree(Fq*c);将地址为c的分区的内存回收;其中,参数*c表示要回收内存的结点;voidcreate(Fq*head);创建新作业的子函数;其中,参数*head表示空闲分区链的链首指针;要配合函数alloc()使用;voidcha(Fq*head);查看内存中的空闲分区链的子函数;其中,参数*head表示空闲分区链的链首指针;voidhui(Fq*head);回收内存的子函数;其中,参数*head表示空闲分区链的

4、链首指针;要配合函数free()使用;3运行环境1)操作系统:WindowsXP(32位/DirectX11)2)电脑:X86兼容台式电脑处理器:英特尔Pentium(奔腾)双核E5300@2.60GHz内存:2GB4开发工具和编程语言1)开发工具:VisualC++6.0;可编辑版word格式完美整理2)编程语言:C++语言;5详细设计1)程序结构如图2:图2程序结构图主菜单创建新作业alloc();内存分配查看空闲分区链free();内存回收程序结束退出回收内存空间2)●主菜单模块:voidmain()//主函数{Fq*head=newFq;head-

5、>next=newFq;head->next->size=MAXSIZE;head->next->o=0;head->next->next=NULL;intchoice=0;do{cout<<"请选择你要进行的操作:"<>choice;switch(choice){可编辑版word格式完美整理case1:create(head);break;case2:cha(head);break;case3:hui(head);break;case0:break;

6、default:cout<<"输入错误!"<next;p->before=head;intno=0,b=0;cout<<"请输入要创建的作业的编号:";cin>>no;cout<<"请输入作业的需求空间大小:";cin>>b;alloc(b,no,p);//此处调用功能函数alloc()}●查看空闲分区链模块:voidcha(Fq*head)//查看内存中的空闲分区链的子函数{Fq*p=head->next;

7、p->before=head;inti=0;cout<<"空闲分区链的情况为:"<o==0){cout<<"空闲分区"<<++i<<""<size<<"K"<next;可编辑版word格式完美整理}}●回收内存空间模块:voidhui(Fq*head)//回收内存的子函数{Fq*p=head->next;p->before=head;intno=0;cout<<"请输入要回收内存的作业号:";cin>>no;while(p!=NULL){if(p->no==no){fre

8、e(p);//此处调用功能函数free()cout<<"作业"<<

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。