操作系统首次适应算法动态分配C语言代码_第1页
操作系统首次适应算法动态分配C语言代码_第2页
操作系统首次适应算法动态分配C语言代码_第3页
操作系统首次适应算法动态分配C语言代码_第4页
操作系统首次适应算法动态分配C语言代码_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

操作系统首次适应算法动态分配C语言代码操作系统首次适应算法动态分配C语言代码操作系统首次适应算法动态分配C语言代码xxx公司操作系统首次适应算法动态分配C语言代码文件编号:文件日期:修订次数:第1.0次更改批准审核制定方案设计,管理制度实验名称:操作系统动态分配姓名:杨秀龙学号:32专业班级:创新实验班111指导老师:霍林实验题目内存动态分区的分配与回收内存实验目的有利于我们更好的了解内存动态分区分配的操作情况,掌握可变分区首次适应算法的原理以及其编程实现。设计思想可变分区分配是根据进程的实际需求,动态地为之分配内存空间。首次适应算法要求空闲空间链以地址递增的次序链接。进行内存分配时,从链表头部开始依次检索,找到第一个不小于请求空间大小的空闲空间进行分配。分配时需考虑碎片问题,若分配会导致碎片产生则将整块分区分配。内存的回收需要考虑四种情况:收分区前后两个分区都空闲,则需要和前后两个分区合并;回收分区只有前一分区空闲,则与前一分区合并;回收分区只有后一分区空闲,则和后一分区合并;回收分区独立,不考虑合并主要数据结构主要的数据结构有两个:空闲分区表结构和表的链结构。根据空闲分区的作用,空闲分区表结构必须包括(分区号、分区起始地址、分区状态、分区数据大小)。由于采用的是双向链表的结果,所以表的链结构包括(空闲分区表的信息、首指针、尾指针)结构程序代码如下:typedefstructBody{ intID; intsize; intaddress; intsign;};typedefstructNode{ Bodydata; structNode*prior; structNode*next;}*DLinkList;流程图退出退出选0输入有误>3or<0选择0-3操作操作界面开始选3显示内存分配选2回收内存选1分配内存输入分区号输入分区号结束合并后回收合并后回收该分区后一个分区空闲该分区前一个分区空闲合并后回收该分区前后都空闲结束将分区从空闲链移出,并修改相应数据结构整块分配判断是否会有碎片内存不足判断剩余空间是否足够输入分区大小结束合并后回收合并后回收该分区后一个分区空闲该分区前一个分区空闲合并后回收该分区前后都空闲结束将分区从空闲链移出,并修改相应数据结构整块分配判断是否会有碎片内存不足判断剩余空间是否足够输入分区大小运行结果图(1)主界面图(1)主界面图(2)分配3个分区后的分配情况图(2)分配3个分区后的分配情况图(3)回收1、3分区后的分配情况图(3)回收1、3分区后的分配情况图(4)再次分配4分区后的分配情况图(4)再次分配4分区后的分配情况附录:源代码如下:#include<>#include<>#defineFree0配内存\n"); printf("2.回收内存\n"); printf("3.显示内存分配情况\n"); printf("0.退出程序\n"); scanf("%d",&choice); if(choice==1) Allocation(); elseif(choice==2) { intID; printf("输入要回收的分区号:"); scanf("%d",&ID); Recycle(ID); } elseif(choice==3) sh

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论