欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    操作系统实验二存储管理动态分区分配及回收算法Word文件下载.docx

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

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

    操作系统实验二存储管理动态分区分配及回收算法Word文件下载.docx

    1、主要流程和源代码实验二源代码includestdio.hincludeincludestring。h#define MAX_SIZE 32767typedef struct node int id; int adr;int size;struct node *next;Node;Node head1,*head2,*back1,*back2,assign;int request;int check(int add,int siz,char c) Node p,head;int check=1;if(add0|siz0)check=0;/*地址和大小不能为负/if(c=fc=F)head=hea

    2、d1;elsehead=head2;p=headnext;while(p!=NULL)check) if(addpadr)&(add+sizpadr)|(add=p-adr)&(addp-adr+psize) check=0; else p=p-next;if(check=0) printf(t输入释放区地址或大小有错误!!n); return check;void init() Node p;head1=(Node)malloc(sizeof(Node);head2=(Node)malloc(sizeof(Node);p=(Node*)malloc(sizeof(Node);head1nex

    3、t=p;head2next=p;p-size=MAX_SIZE;adr=0;next=NULL;p-id=0;Node* assignment1(int num,int req) Node before,after,ass;ass=(Node*)malloc(sizeof(Node);before=head1;after=head1-next;assid=num;asssize=req;while(aftersizeadr=-1; if(aftersize=req) beforenext=afterassadr=after-adr;after-size-=req;assadr=afteraft

    4、er-adr+=req;return ass;void acceptment1(int address,int siz,int rd) Node before,after;int insert=0;back1=(Node*)malloc(sizeof(Node);after=head1-next;back1-adr=address;back1size=siz;back1id=rd;back1-next=NULL;while(!insert&after)/将要被回收的分区插入空闲区(按首址大小从小到大插入)if(after=NULL)(back1-adradr)&(back1adr=before

    5、-adr)next=back1;back1next=after;insert=1;before=before-after=afterif(insert)if(back1-adr=before-adr+beforesize)/和前边分区合并before-size+=back1-size;next=back1-next;free(back1);else if(afterback1adr+back1size=afteradr)/和后边分区合并back1size+=aftersize;back1next=after-back1-id=afterid;free(after);after=back1;pr

    6、intf(”t首先分配算法回收内存成功!);printf(t首先分配算法回收内存失败!Node* assignment2(int num,int req) Node *before,*after,ass,*q;ass=(Node)malloc(sizeof(Node);q=(Node)malloc(sizeof(Node);before=head2;after=head2-size=req;sizereq)after=afternext;assadr=1;if(after-size=req)beforenext=after-adr=after-adr;q=after;adr=qadr;q-si

    7、ze-=req;qadr+=req;before=head2;after=head2next;next=q;qnext=NULL;while(aftersize)size)before=beforenext;after=after-next;next=q;qnext=after;return (ass);void acceptment2(int address,int siz,int rd) Node before,after;back2=(Node)malloc(sizeof(Node);back2-adr=address;back2-size=siz;back2id=rd;back2-ne

    8、xt=NULL;if(head2-next=NULL)/空闲队列为空head2next=back2;head2-size=back2-size;/空闲队列不为空while(after)if(back2adr=afteradr+after-size)/和前边空闲分区合并aftersize+=back2size;back2=after;after=head2-next;if(afteradr=back2-adr+back2-size)/和后边空闲区合并next=after-back2size+=aftersize;before=before-next;insert)/将被回收的块插入到恰当的位置(

    9、按分区大小从小到大)if(after=NULL|(aftersizesize)&(before-sizeback2size) beforenext=back2; back2-next=after; insert=1;break; before=before after=afternext;t最佳适应算法回收内存成功!printf(”t最佳适应算法回收内存失败!n”);void print(char choice)/输出空闲区队列信息Node p;if(choice=fchoice=F)p=head1next;p=head2next;if(p)n空闲区队列的情况为:printf(”t编号t首址t

    10、终址t大小n”);while(p)tdt%dt%dt%dn”,p-id,padr,padr+p-size-1,psize);p=p void menu()/菜单及主要过程char chose;int ch,num,r,add,rd; while(1)system(”cls”);选择最先适应算法请输入F,选择最佳适应算法请输入B,退出程序请输入Ennprintf(”请输入你的选择:scanf(”%c”,&chose);if(chose=e|chose=Eexit(0);system(clswhile(1)if(chose=f|chose=Fprintf(”最先适应算法(First-Fit)模拟:

    11、if(chose=b|chose=B最佳适应算法(Best-Fit)模拟:1.分配内存,2。回收内存,3。查看内存,4。返回nnscanf(%d”,&ch);fflush(stdin);switch(ch)case 1:printf(”输入申请的分区大小:”);scanf(”d”,r);if(chose=f|chose=F)assign=assignment1(num,r);assign=assignment2(num,r);if(assign-adr=-1)printf(”分配内存失败!else printf(”分配成功!分配的内存的首址为:dn”,assignadr);break;case

    12、 2:输入释放的内存的首址:scanf(”%d”,add);输入释放的内存的大小:d”,r);printf(”输入释放的内存的编号:scanf(”d”,rd);if(check(add,r,chose)f|chose=acceptment1(add,r,rd);acceptment2(add,r,rd);case 3:print(chose);case 4:menu(); void main()/主函数 init();menu();四、实验结果五、实验总结通过这次课程设计我练习了用C语言写系统软件,对操作系统中可变分区存储管理有了更深刻的了解。在写程序的时候也遇到了一些困难。比如在设计数据结构时特别犹豫,总想找一个很合适的。但是,后来才知道,关键要多尝试,而空想是没有用的。最后我证实了自己的设计的合理性。还有为了使程序更健壮,在网上下载了几个代码,进行调试,运行、查看结果。看懂代码和结果后,这次实验也算是成功的一大半了。总之这次实验还是让我收获很大,让我在书本上的知识能够运用到实际当中。这种学以致用的感觉才是最好的。


    注意事项

    本文(操作系统实验二存储管理动态分区分配及回收算法Word文件下载.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

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




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开