电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

精选内存分配首次适应算法

13页
  • 卖家[上传人]:pu****.1
  • 文档编号:480457015
  • 上传时间:2024-03-02
  • 文档格式:DOC
  • 文档大小:113.50KB
  • / 13 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、实 验 报 告 一、 实验名称:内存分配与回收二、 实验内容:用首次适应算法实现存储空间的分配,回收作业所占用的存储空间。三、 实验目的:一个好的计算机系统不仅要有足够的存储容量,较高的存取速度和稳定可靠的存储器,而且能够合理的分配和使用这些主存空间。当用户提出申请主存空间的要求时,存储管理能够按照一定的策略分析主存的使用情况,找出足够的空间分配给申请者;当作业运行完毕,存储管理要回收作业占用的主存空间。本实验实现在可变分区存储管理方式下,采用最先适应算法对主存空间进行分配和回收,以加深了解操作系统的存储管理功能。四、 实验过程:a) 基本思想空闲分区链以地址递增的次序连接。在分配内存时,从链首开始顺序查找,直至找到一个大小能够满足要求的空闲分区为止;然后再按照作业大小,从该分区中划出一块内存空间分配给请求者,余下的空闲分区仍然留在空闲链中。若从链首直至链尾都不能找到一个能满足要求的分区,则此次内存分配失败。b)主要数据结构typedef struct FreeLink /空闲链 struct FreeLink *prior; char name; int start; int siz

      2、e; bool flag; struct FreeLink *next;* ptr,*head;head top;ptr p;c)内存分配算法 当有进程要求分配主存时,依据首次适应算法从链头开始,延链查找一个足以容纳该进程的空闲区。若这个分区比较大,则一分为二,一部分分配给进程,另一部分作为空闲区仍留在链中的当前位置,修改它的上一个空闲区的前向指针值为再加上分配给进程的分区大小,下一个空闲区的后向指针值为再加上分配给进程的分区大小,使链保持完整。若这个分区的大小正好等于进程的大小,该分区全部分配给进程,并将该空闲区从链中摘除(即修改下一个空闲区的后向指针=该空闲区后向指针,上一个空闲区的前向指针=该空闲区的前向指针)。再在已分配区表中找一个空表目,登记刚刚分配的内存始址、长度和进程号。d)内存的回收当进程运行完成,释放内存时,通过输入进程号,来回收进程占用的分区。在回收时,释放区与空闲区相邻接的情况要考虑4种情况: 释放区下邻空闲区释放区上邻空闲区释放区与上下空闲区均相邻释放区与上下空闲区均不相邻e)程序流程图空闲链的首次适应算法分配流程图开始申请xkb内存由链头找到第一个空闲区分区大

      3、小xkb?大于分区大小=分区大小-xkb,修改下一个空闲区的后向指针内容为(后向指针)+xkb;修改上一个空闲区的前向指针为(前向指针)+xkb将该空闲区从链中摘除:修改下一个空闲区的后向地址=该空闲区后向地址,修改上一个空闲区的前向指针为该空闲区的前向指针等于小于延链查找下一个空闲区到链尾了?作业等待返回是否登记已分配表返回分配给进程的内存首地址 空闲链的首次适应算法回收流程图 开始输入完成进程的标号在分配区表中查找释放区p下邻分区空闲区前一个空闲区的后向指针指向p的后一个分区,p的后一个分区的前向指针指向p的前一个分区,且p的前一个分区大小更改为加上p的大小,释放p释放区p上邻分区空前一个分区的后向指针指向p的后一个空闲分区,p的后一个空闲分区的前向指针指向p的前一个分区,且p的后一个分区大小更改为加上p的大小释放区p上下均邻空闲区前一个空闲区的后向指针指向p的后一个空闲分区,p的后一个空闲分区的前向指针指向p的前一个空闲分区,且p的前一个空闲分区大小更改为加上p的大小再加上p的后一个空闲分区的大小,合并后的这个空闲区的后向指针指向p的下下个分区,如果p的下下个分区不为空,则其前向

      4、指针指向合并后的这个空闲区,释放p和p的下一个分区释放区p上下均不邻空闲区将p放在链首,并修改其状态位为空闲f)截屏 五、 源代码#include #include #include using namespace std;typedef struct FreeLink/定义空闲链struct FreeLink *prior;char name;int start;int size;bool flag;struct FreeLink *next;* ptr,*head;head top;ptr p;void print()/将内存分配情况打印到屏幕上p=top;cout*内存分配情况表*endl;cout区号tt起始位置t区间长度t区间状态tendl;docoutnamettstartttsizeflag=false)/flag为false,表明该分区空闲cout空闲endl;elsecout已占用next;while(p!=NULL);void clear()/结束操作时清空“内存”以备其他操作dop=top;top=top-next;free(p);while(top!=NULL)

      5、;coutprior-flag=false&p-next-flag=false)x=1; /释放区与上下空闲区均相邻if(p-prior-flag=false&p-next-flag=true)|(p-prior-flag=false&p-next=NULL)x=2;/释放区下邻空闲区if(p-prior-flag=true&p-next-flag=false)|(p-prior=NULL&p-next-flag=false)x=3;/释放区上邻空闲区if(p-prior-flag=true&p-next-flag=true)|(p-prior=NULL&p-next-flag=true)|(p-prior-flag=true&p-next=NULL)x=4;/释放区与上下空闲区均不相邻 switch(x)case 1:p-next-prior=p-prior; p-prior-next=p-next; p-prior-size=p-prior-size+p-size+p-next-size; p-prior-next=p-next-next; if(p-next-next!=NULL

      6、) p-next-next-prior=p-next-prior; free(p-next);/释放 free(p); break; case 2:if(p-next=NULL)/p为最后一个分区 p-prior-next=p-next; else p-next-prior=p-prior; p-prior-next=p-next; p-prior-size=p-prior-size+p-size; free(p); break;case 3:if(p-prior=NULL)/p为第一个分区 top=p-next; p-next-prior=NULL; p-next-start=p-start; p-next-size=p-next-size+p-size; else p-next-prior=p-prior; p-prior-next=p-next;p-next-start=p-start; p-next-size=p-next-size+p-size; free(p); break;case 4:p-name=*;/将释放区移至链首并标记为未被占用 p-flag=false; br

      7、eak;void allocate(ptr &p)/最先适应法的内存分配函数FreeLink *fl=(FreeLink *)malloc(sizeof(FreeLink);coutfl-name;coutfl-size;fl-flag=true;doif(p-flag=false&p-sizefl-size) fl-start=p-start; p-start=fl-start+fl-size; p-size=p-size-fl-size; fl-next=p; fl-prior=p-prior; p-prior-next=fl; p-prior=fl; goto a;if(p-flag=false&p-size=fl-size) p-flag=fl-flag; p-name=fl-name; free(fl); goto a;p=p-next;while(p!=NULL);cout内存过小,分配失败!endl;goto b;a: cout分配成功!endl;b: ;/啥也不做void huishou(ptr &p)/内存回收函数char n = ;coutn;do if(p-flag=true&p-name=n)

      《精选内存分配首次适应算法》由会员pu****.1分享,可在线阅读,更多相关《精选内存分配首次适应算法》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.