欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOCX文档下载  

    实验三 存储器管理.docx

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

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

    实验三 存储器管理.docx

    实验三存储器管理一、实验目的1 .了解内存管理的基本功能2 .掌握内存管理中的几种内存分配与回收算法3 .掌握可变分区算法中空闲分区的合并方法二、实验内容与要求设计一个存储器管理模拟系统并调试运行。要求采用一种常用的存储器分配算法(如:最正确适应算法、最坏适应算法),设计一个存储器管理模拟系统。允许进展屡次的分配和释放,并可向用户反响分配和释放情况及当前内存的情况;采用“命令菜单选择和键盘命令输入的会话方式,根据输入请求调用分配模块,或回收模块,或内存查询模块,或最终退出系统。三、实验参考下面是采用的是首次适应分配算法的一个例如。根据指针freep查找自由链,当找到第一块可满足分配请求的空闲区时便分配之。当某空闲区被分配后的剩余空闲区空间大于规定的碎片最小容量min时,那么形成一个较小的空闲区留在自由链中。回收时,根据MAT将指定分区链入自由链。假设该分区有前邻或后邻空闲分区,那么将他们拼接成一块加大的空闲区。当某个分配请求不能被满足,但此时系统中所有碎片总量满足分配请求的容量时,系统立即进入内存“紧凑以消除碎片。即将各作业占用区集中下移到用户内存区的下部(高地址局部),形成一片连接的作业区,而在用户内存区的上部形成一块较大的空闲区。然后再进展分配。本系统的主要程序模块包括:分配模块ffallocation,回收模块ffcolection,紧凑模块coalesce及命令处理模块menu。Menu用以模拟系统的输入,采用“命令菜单选择和键盘命令输入的会话方式,根据输入请求调用分配模块,或回收模块,或内存查询模块,或最终退出系统。用到的数据构造如下:(1)自由链与区头。内存空闲区采用自由链构造。链首由freep指向,链中各个空闲区按地址递增次序排列。初启时整个用户内存区为一个空闲区。在每个空闲区首部设置一个区头(freearca)构造。区头信息包括:size空闲区大小(以字节计),包括区头所占空间;next前向链指针,指向下一个空闲区;back反向链指针,指向上一个空闲区;address本空闲区首地址。(2)内存分配表MAT0系统设置一个MAT,每个运行作业都在MAT中占有一个表目,回收分区时去除相应表目。表目信息包括:name用户作业名;length作业区大小;addr作业区首地址;例如代码#include<stdio.h>#include<stdlib.h>初始化#defineTOTA1.5000#defineSETADDRES#defineMIN1001-#defineMAX10现实命令菜单typedefstructfreearea(intaddress;intsize;读命令显示不能分配showyoureturn(U);/*分配模块*读键盘fngpei(intjl,charjn)freeptrfp;endjobptrjp,jpl,jp2;jp2=(jobptr)malloc(si:if(totalfree<jl)return(1);fp=freep;while(fp!=NU1.1.)if(fp->size<jl)fp=fp->next;else(jobnumber=jobnumber+1;totalfree=totalfree-jl;jp2->name=jn;jp2->length=jl;jp2->address=freep->address;if(jobp=NU1.1.)(jp2->next=NU1.1.;jp2->back=NU1.1.;jobp=jp2;)elsejp=jobp;while(jp!=NU1.1.&&(jp2->address<jp->address)(jpi=jp;jp=jp->next;)jp2->next=jp;if(jp=NU1.1.)(jp2->back=jpl;jpl->nextjp2;)elsejp2->back=jp->back;if(jp->back!=NU1.1.)jpl->next=jp2;elsejobp=jp2;jp->back=Jp2;)if(fp->size-jl)<MIN)(if(fp->next!=NU1.1.)fp->next->back=fp->back;if(fp->back!=NU1.1.)fp->back->next=fp->next;elsefreep=fp->next;*return();*/)elsefp->size=fp->size-jl;fp->address=fp->address+jl;return(2);if(totalfree>=jl)retum(0);/*显示模块*/xianshi()jbptrjp;/*清屏*/if(jobnumber<=0)printf(,NOJOB!");elseprintf(',namettlengthttaddressn");jp=jobp;while(jp!=NU1.1.)(printf("%ctt%dtt%dn",jp->name,jp->length,jp->address);jp=jp->next;)printf(11nthetotalleftis%dbytes:",totalfree);)/*回收模块*/huishou(charjn)(freeptrfp,fpl,fp2;jobptrjp;intf=0;jp=jobp;while(jp!=NU1.1.)&&(jp->name!=Jn)jp=jp->next;if(jp!=NU1.1.)(jobnumber=jobnumber-l;totalfree=totalfree+jp->length;if(freep=NU1.1.)(freep=(freeptr)malloc(sizeof(structfreearea);freep->address=jp->address;freep->size=jp->address;freep->next=NU1.1.;freep->back=NU1.1.;elsefp=freep;while(fp!=NU1.1.)&&(fp->address<jp->address)(fp=fp;fp=fp->next;1if(fp!=NU1.1.)(if(fp->next!=NU1.1.)&&(fp->next->address=jp->address+jp->length)仁f+l;if(fp->back!=NU1.1.)&&(jp->address=fpl->address+fl->size)仁f+2;)elseif(jp->address)=(fp1->address+fpl->size)f=f+2;switch(f)(caseO:(fp2=(freeptr)malloc(sizeof(structfreearea);fp2->address=jp->address;fp2->size=jp->length;fp2->next=fp;if(fp!=NU1.1.)(fp2->back=fp->back;if(fp->back!=NU1.1.)fpl->next=fp2;elsefreep=fp2;fp->back=fp2;1else(fp2->back=fpl;fpl->next=fp2;1)case 1:(fp->size=fp->size+jp->length;fp->address=jp->address;)case 2:fpl->size=fpl->size+jp->length;case 3:fpl->size=fpl->size+jp->length+fp->size;fpl->next=fp->next;if(fp->next!=NU1.1.)fp->next->back=fp2;free(f);if(jp=jobp)jobp=jp->next;if(jp->next!=NU1.1.)jp->next->back=jp->back;if(jp->back!=NU1.1.)jp->back->next=jp->next;free(jp);/*搬家*/banjia()(freeptrfp,fpl;jobptrjp;longbottom;if(jobnumber>0)(jP=jobp;bottom=TOTA1.+SETADDRESS;while(jp!=NU1.1.)(jp->address=bottom-jp->length;bottom=bottom-jp->length;jp=jp->next;)fp=freep;while(fp!=NU1.1.)(fp=fp;fp=fp->next;free(fpl);)freep=(freeptr)malloc(sizeof(freeptr);freep->size=totalfree;freep->address=SETADDRESS;freep->next=NU1.1.;freep->back=NU1.1.;mingling()(charname,anykeyjobname;intlength,select;intaddress;(al:clrscr();printf(,youcanselectoneofthefbllowingAn");printf(',(l)requiretobeallocaten");printf(11(2)requiretocollextethesizen");printf(,(3)checkthememoryn");printf(',(4)quitsystemn");printf(,youselectis:");scanf(',%d"select);Switch(Select)(case1:if(jobnumber>=MAX)printf(',thejobistoomany");else(printf(,enteryoujobnamen,');scanf(,%s",<fename);printf(,enteryourjoblengthn'r);scanf(',%1Od11,<fclength);address=fengpei(length,name);switch(address)caseI:printf(',thememoryisfull");break;case0:(banjia();fengpei(length,name);xianshi();break;)case2:xianshi();break;*elsexianshi();*/1break;)case 2:(printf(11enterthenameofthejobn");printf(',youselectis:");jobname=getchar();jobname=getchar();huishou(jobname);xianshi();break;case 3: xianshi();break;case 4: gotoa2;)printf(,'npressentertoreturnmenun11);anykey=getchar();anykey=getchar();*scanf(1,%c'anykey);*/gotoal;a2:printf("youhaveexitthesystem!");)main()init();mingling();

    注意事项

    本文(实验三 存储器管理.docx)为本站会员(李司机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开