最坏适应算法-动态分区法存储.docx

上传人:叶*** 文档编号:35380586 上传时间:2022-08-21 格式:DOCX 页数:14 大小:11.64KB
返回 下载 相关 举报
最坏适应算法-动态分区法存储.docx_第1页
第1页 / 共14页
最坏适应算法-动态分区法存储.docx_第2页
第2页 / 共14页
点击查看更多>>
资源描述

《最坏适应算法-动态分区法存储.docx》由会员分享,可在线阅读,更多相关《最坏适应算法-动态分区法存储.docx(14页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、阅读教材计算机操作系统第四章,掌握存储器管理相关概念和原理。编写程序模拟实现内存的动态分区法存储管理。内存空闲区使用自由链管理,采用最坏适应算法从自由链中寻找空闲区进行分配,内存回收时假定不做与相邻空闲区的合并。假定系统的内存共640K,初始状态为操作系统本身占用64K。在t1时间之后,有作业A、B、C、D分别请求8K、16K、64K、124K的内存空间;在t2时间之后,作业C完成;在t3时间之后,作业E请求50K的内存空间;在t4时间之后,作业D完成。要求编程序分别输出t1、t2、t3、t4时刻内存的空闲区的状态。 实验代码带界面系统#include#includetypedef struc

2、t listint len;char name;int address;struct list *next;listNode,*listlink;char id=1;void init(listlink &q)q=(listlink)malloc(sizeof(listNode);if(!q) exit(-1);q-next=NULL;/初始化int length(listlink free)listlink q;q=free-next;int len=0;while(q!=NULL)len=len+q-len;q=q-next;return len;/空闲区总长度listlink Delis

3、t(char name,listlink &q)listlink a,b,c; a=q-next;b=q;while(a!=NULL)if(a-name=name)c=a-next;b-next=c;return a;b=b-next;a=a-next;return NULL; /按作业或进程名删除该结点void insert(listlink &q,int address,int len,char name=F)listlink a=(listlink)malloc(sizeof(listNode);a-address=address;a-len=len;a-name=name;listli

4、nk b=q;while(b-next!=NULL)b=b-next;a-next=NULL;b-next=a;/插入结点void sort(listlink &q)listlink a,b;int temp1,temp2;a=q-next;if(a=NULL)return;b=a-next;while(a-next!=NULL)while(b!=NULL)if(a-lenlen)temp1=a-address;temp2=a-len;a-len=b-len;a-address=b-address;b-address=temp1;b-len=temp2;b=b-next;a=a-next;b=

5、a-next;/按长度从大到小排序listlink findpre(listlink free,int address)listlink a;a=free-next;while(a!=NULL)if(a-address+a-len=address)Delist(a-name,free);return a;a=a-next;return NULL;/查找前连接区listlink findnext(listlink free,int address,int len)listlink a;a=free-next;while(a!=NULL)if(a-address=address+len)Delis

6、t(a-name,free);return a;a=a-next;return NULL;/查找后连接区void freeMemo(char name,listlink &free,listlink &busy)listlink a=Delist(name,busy);listlink b,c; id+; b=findpre(free,a-address);c=findnext(free,a-address,a-len);if(b!=NULL&c!=NULL)b-len=a-len+b-len+c-len;insert(free,b-address,b-len,id); sort(free);

7、/前连接区后连接区都存在else if(b=NULL&c!=NULL)a-len=a-len+c-len;insert(free,a-address,a-len,id); sort(free);/前连接区不存在后连接区存在else if(b!=NULL&c=NULL)b-len=a-len+b-len;insert(free,b-address,b-len,id); sort(free);/前连接区存在后连接区不存在else insert(free,a-address,a-len,id);/前连接区不存在后连接区不存在/回收内存void requireMemo(char name, int r

8、equire,listlink &free,listlink &busy) listlink a;int address;a=free-next; if(a!=NULL&a-len=require)a-len=a-len-require;if(a-len=0)address=a-address;Delist(a-name,free);else address=a-address; a-address=a-address+require; sort(free);insert(busy,address,require,name);elseprintf(分配失败n);/内存分配void visit(

9、listlink free)listlink a;int i=1;a=free-next;printf(空闲区的情况n);if(a=NULL)printf(空n);while(a!=NULL)printf(空闲区%d 起始地址:%d 长度:%dn,i,a-address,a-len);a=a-next;i+;/输出空闲区链表情况void visit1(listlink busy)listlink a;int i=1;a=busy-next;printf(繁忙区的情况n);if(a=NULL)printf(空n);while(a!=NULL)printf(繁忙区%d 起始地址:%d 长度:%d

10、进程名:%cn,i,a-address,a-len,a-name);a=a-next;i+;/输出繁忙区链表情况void show(listlink free,listlink busy)printf( 可变分区存储管理系统n);printf(n);char choice=1;char name;int require;while(choice!=0)printf(-n);printf(| 1:查看空闲区总长度 |n);printf(| 2:请求内存分配 |n);printf(| 3:回收内存 |n);printf(| 4:查看空闲区状态 |n);printf(| 5:查看繁忙区状态 |n);

11、printf(| 0:退出 |n);printf(-n);printf(请输入你要执行的操作选项(0-5):);scanf(n%c,&choice);switch(choice)case 0:printf(谢谢使用本系统,欢迎下次使用n);break;case 1: printf(空闲区总长度:%dn,length(free); break;case 2:printf(请输入作业或进程名:);scanf(n%c,&name);printf(请输入作业或进程所需内存大小:);scanf(%d,&require);requireMemo(name,require,free,busy);break;case 3:printf(请输入需回收的作业或进程名:);scanf(n%c,&name);freeMemo(name,free,busy);break;case 4:visit(free);break;case 5: visit1(busy); break;default:break;printf(n);/界面系统void main()listlink free;listlink busy;init(free);init(busy);insert(free,0,640,id); requireMemo(S,64,free,busy);show(free,busy);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 初中资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com