欢迎来到得力文库 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
得力文库 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

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

    • 资源ID:35380586       资源大小:11.64KB        全文页数:14页
    • 资源格式: DOCX        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    阅读教材计算机操作系统第四章,掌握存储器管理相关概念和原理。编写程序模拟实现内存的动态分区法存储管理。内存空闲区使用自由链管理,采用最坏适应算法从自由链中寻找空闲区进行分配,内存回收时假定不做与相邻空闲区的合并。假定系统的内存共640K,初始状态为操作系统本身占用64K。在t1时间之后,有作业A、B、C、D分别请求8K、16K、64K、124K的内存空间;在t2时间之后,作业C完成;在t3时间之后,作业E请求50K的内存空间;在t4时间之后,作业D完成。要求编程序分别输出t1、t2、t3、t4时刻内存的空闲区的状态。 实验代码带界面系统#include<stdio.h>#include<stdlib.h>typedef struct 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 Delist(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;listlink 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->len<=b->len)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=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)Delist(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);/前连接区后连接区都存在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 require,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(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 进程名:%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");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);

    注意事项

    本文(最坏适应算法-动态分区法存储.docx)为本站会员(叶***)主动上传,得力文库 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知得力文库 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于得利文库 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档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  

    收起
    展开