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

    2022年操作系统内存管理代码 2.pdf

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

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

    2022年操作系统内存管理代码 2.pdf

    程序代码:#include#include#define MAXMSIZE 99 using namespace std;struct Node int startAddress;char name;int size;int endAddress;struct Node*prior;struct Node*next;struct Blocklist Node*head;Blocklist*freelist=new Blocklist;Blocklist*busylist=new Blocklist;void initial();void allocateBlock();void print();void reclaimBlock();void main()int slct;initial();print();coutselect allocetion(1)or reclaim(2):slct;switch(slct)case 1:allocateBlock();print();break;case 2:reclaimBlock();print();break;default:break;名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 8 页 -void allocateBlock()/分配分区 char nm;int strtadd,sz;Node*ftemp,*delt,*btemp;ftemp=freelist-head;btemp=busylist-head;coutplseae input a new block information:endl;cout-name-startAdd-size-nmstrtaddsz;bool bfinish=false;bool ffinish=false;Node*p=new Node;p-name=nm;p-startAddress=strtadd;p-size=sz;p-endAddress=p-startAddress+p-size-1;if(busylist-head=NULL&bfinish=false)/分配使用链表的头结点btemp=p;btemp-prior=NULL;btemp-next=NULL;bfinish=true;busylist-head=btemp;else while(btemp!=NULL&bfinish=false)/查找使用链表的可分配点 if(btemp-endAddress startAddress&btemp-next=NULL)/加入使用链表链尾p-next=NULL;p-prior=btemp;btemp-next=p;bfinish=true;else if(btemp-endAddress startAddress&btemp-next-startAddress p-endAddress)/加入使用链表链中p-next=btemp-next;p-prior=btemp;btemp-next-prior=p;btemp-next=p;bfinish=true;名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 8 页 -else if(btemp-prior=NULL&btemp-startAddress p-endAddress&p-startAddress=0)/加入使用链表链头p-next=btemp;p-prior=NULL;btemp-prior=p;busylist-head=p;bfinish=true;btemp=btemp-next;while(ftemp!=NULL&ffinish=false&bfinish=true)/增加结点修改空闲链表 if(ftemp-startAddress startAddress&ftemp-endAddress=p-endAddress)Node*q=new Node;q-startAddress=p-endAddress+1;q-endAddress=ftemp-endAddress;q-size=q-endAddress-q-startAddress+1;q-prior=ftemp;q-next=ftemp-next;ftemp-endAddress=p-startAddress-1;ftemp-size=ftemp-endAddress-ftemp-startAddress+1;ftemp-next=q;ffinish=true;ftemp=ftemp-next;if(ffinish=true)/查找需要删除的结点并删除之 ftemp=freelist-head;while(ftemp!=NULL)if(ftemp-size=0)if(ftemp=freelist-head)freelist-head=ftemp-next;else 名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 8 页 -ftemp-prior-next=ftemp-next;ftemp-next-prior=ftemp-prior;delt=ftemp;ftemp=ftemp-next;delete delt;else ftemp=ftemp-next;coutit has been allocated!endl;else coutit cannot allocate!endl;void initial()/初始分配 coutinitial.startAddress=0;fl-endAddress=MAXMSIZE;fl-size=fl-endAddress-fl-startAddress+1;fl-prior=NULL;fl-next=NULL;freelist-head=fl;busylist-head=NULL;void print()/打印执行结果 Node*ftemp=freelist-head;Node*btemp=busylist-head;coutfreelist information-startadd-endadd-size-endl;while(ftemp!=NULL)cout-startAddress -endAddress-size next;coutbusylist information-name-startadd-endadd-size-endl;while(btemp!=NULL)cout-name-startAddress-endAddress-size next;couthead;btemp=busylist-head;coutplease input the name of reclaimed block:nm;while(btemp!=NULL)/确定要回收的内存空间 if(btemp-name=nm)break;btemp=btemp-next;while(ftemp!=NULL)/回收选定的内存空间 if(btemp-endAddress head-startAddress)/要回收的内存在空闲链表之前 if(ftemp-startAddress=btemp-endAddress+1)ftemp-startAddress=btemp-startAddress;ftemp-size+=btemp-size;ftemp-prior=NULL;else busylist-head=btemp-next;if(busylist-head)busylist-head-prior=NULL;btemp-next=freelist-head;btemp-prior=NULL;freelist-head-prior=btemp;freelist-head=btemp;freelist-head-prior=NULL;finish=true;名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 8 页 -else if(btemp-startAddress ftemp-endAddress&btemp-endAddress next-startAddress)/要回收的内存在空闲链表之中if(btemp-startAddress=ftemp-endAddress+1&btemp-endAddress=ftemp-next-startAddress-1)/上下皆邻ftemp-size=ftemp-size+btemp-size+ftemp-next-size;ftemp-endAddress=ftemp-startAddress+ftemp-size-1;if(ftemp-next-next)ftemp-next-next-prior=ftemp;ftemp-next=ftemp-next-next;else if(btemp-startAddress=ftemp-endAddress+1)/上邻ftemp-size+=btemp-size;ftemp-endAddress=ftemp-startAddress+ftemp-size-1;else if(btemp-endAddress=ftemp-next-startAddress-1)/下邻ftemp-next-startAddress=btemp-startAddress;ftemp-size=ftemp-next-endAddress-ftemp-next-startAddress+1;else/上下都不相邻btemp-next=ftemp-next;ftemp-next-prior=btemp;ftemp-next=btemp;btemp-prior=ftemp;ftemp=ftemp-next;if(!btemp-prior&finish=false)busylist-head=btemp-next;if(busylist-head)busylist-head-prior=NULL;else if(finish=false)if(btemp-next)btemp-next-prior=btemp-prior;btemp-prior-next=btemp-next;名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 8 页 -运行结果:initial.freelist information-startadd-endadd-size-0-99-100 busylist information-name-startadd-endadd-size-select allocetion(1)or reclaim(2):1 plseae input a new block information:-name-startAdd-size-a 20 25 it has been allocated!freelist information-startadd-endadd-size-0-19-20-45-99-55 busylist information-name-startadd-endadd-size-a-20-44-25 1 plseae input a new block information:-name-startAdd-size-b 48 20 it has been allocated!freelist information-startadd-endadd-size-0-19-20-45-47-3-68-99-32 busylist information-name-startadd-endadd-size-a-20-44-25-b-48-67-20 1 plseae input a new block information:-name-startAdd-size-c 70 10 it has been allocated!freelist information-startadd-endadd-size-0-19-20-45-47-3-68-69-2-80-99-20 busylist information-name-startadd-endadd-size-a-20-44-25-b-48-67-20 名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 8 页 -c-70-79-10 2 please input the name of reclaimed block:b freelist information-startadd-endadd-size-0-19-20-45-69-25-80-99-20 busylist information-name-startadd-endadd-size-a-20-44-25-c-70-79-10 名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 8 页 -

    注意事项

    本文(2022年操作系统内存管理代码 2.pdf)为本站会员(H****o)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

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




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开