




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#include#include/全局变量float minsize=5;int count 1=0;int count 2=0;#define m 10/假设系统允许的最大m的可用区域表#define n 10 /假设系统允许的最大任务数为n/指定表格的定义Struct float address/分区起始地址Float length/分区长度(字节)Int flag/指定区域表注册栏旗标,0表示空白栏 used _ tablen;/指定的区域表格物件名称/可用区域表格的定义:Struct float address/可用区域起始地址Float length/可用空间长度(字节)Int flag/空白空间表注册列标志,将空白列标记为“0”,将未指定标记为“1” free _ tablem;/空闲区域表对象名/函数声明Void初始化(void);Int distribute(int,float);int recycle(int);void show();/初始化两个表格Void初始化(void)int a;for(a=0);a=n-1;a)Used_tablea。flag=0;/指定表格中的表格项目全部放置为空表格项目Free_table0。address=1000Free_table0。length=1024Free_table0。flag=1;/未分配空闲区域表中的所有表条目/优化分配算法实现的动态分区Int distribute (intprocess _ name,float need _ length)Int i,k=-1;/k用于在空闲表中查找选定的未分配列Float ads,lenint count=0;I=0;While(i=m-1) /循环最佳空闲分区If (free _ table I)。flag=1 need _ length=free _ tableI。长度)计数;If (count=1 | | free _ table I)。length free _ table k。长度)k=I;I=I 1;If(k)!=-1)If (free _ table k)。length-need _ length)=minsize)/全部指定Free_tablek。flag=0;Ads=free_tablek。addressLen=free_tablek。长度;Else/剪切可用区域Ads=free_tablek。addressLen=need _ lengthFree _ table k。address=need _ lengthFree _ table k。length-=need _ length;I=0;/在内存分配表中循环显示为空列的条目While(used_tablei)。flag!=0) I=I 1;查找If(i=n-1) /,然后在指定区表中注册表条目Used_tablei。address=adsUsed_tablei。length=lenUsed _ table I。flag=process _ nameCount1Else /指定区表的长度不足If(free_tablek)。flag=0) /取消已执行的所有分配Free_tablek。flag=1;Free_tablek。address=adsFree_tablek。length=lenElse /取消指定已执行的切片Free_tablek。address=adsFree_tablek。length=len“Cout”内存分配空间已满,分配失败! n ;return 0;Else“Cout”找不到适合此操作的分区! n ;return 0;Return process _ nameInt recycle(int process_name)int y=0;Float recycle _ address,recycle _ lengthInt i、j、k;/j列是底部净空,k列是顶部净空int x;/在内存分配表中,查找要回收的作业While(y=n-1used_tabley)。flag!=process_name) y=y 1;If(y=n-1) /如果找到操作,则将该列中的标志设置为“0”Recycle _ address=used _ table y。addressRecycle _ length=used _ table y。长度;Used_tabley。flag=0;Count2找不到Else /作业,回收失败“Cout”任务不存在! n ;return 0;j=k=-1;I=0;While(!(I=m | (k)!=-1j!=-1)/修改空闲分区表If(free_tablei)。flag=1)if (free _ table I)。address free _ table I。length)=recycle _ address)k=I;/检查相邻项是否存在if(recycle _ address recycle _ length)=free _ tableI)。address)j=I;/检查相邻项是否存在I=I 1;/合并可用区域If(k)!=-1) /回收区域有相邻项目If(j!=-1)/回收区域也与下面相邻,上、下、下、下、下Free _ table k。length=free _ table j。length recycle _ lengthFree_tablej。flag=0;/将j列中的标记设置为“0”Else /没有子相邻项,并与父相邻项合并Free _ table k。length=recycle _ lengthElse if(j!=-1)(/仅子相邻,并与子相邻合并。)Free _ table j。length=recycle _ lengthFree _ table j。address=recycle _ addressElse/向上,向下无相邻x=0;While(free_tablex)。flag!=0)x=x 1;/在可用空间表中查找状态为“0”的列If(x=m-1)找到后,将回收的内存注册到空闲分区Free _ table x。address=recycle _ addressFree _ table x。length=recycle _ lengthFree_tablex。flag=1;Else/空闲表已满,无法执行回收Used _ table y。flag=process _ name“Cout”可用空间已满,回收失败! n ;return 0;Return process _ nameVoid show() /运行程序时输出模拟的内存分配回收表Cout nCout“空白空间 n”;Cout nfor(int I=0);I=count2I) Cout 地址: choice交换机(choice)Case 0:ExitFlag=true/结束操作Break盘柜1:请输入“Cout”任务名称和所需的内存
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 机泵的维护与保养
- 《与妻书》课件 统编版高中语文必修下册
- 2025年世界知识产权日知识产权考试题库(答案+解析)
- 《新闻学概论》试题及参考答案
- 药物依赖性风险-洞察及研究
- 2025年事业单位笔试-湖北-湖北公共基础知识(医疗招聘)历年参考题库典型考点含答案解析
- 语音交互设计-洞察及研究
- 数字乡村建设与治理-洞察及研究
- 海水淡化智能化控制-洞察及研究
- 遥感在减灾中的应用优化研究-洞察及研究
- 记账实操-节能环保企业的全盘账务处理实例
- 居间合同协议书范本txt下载
- 绿化庭院合同协议书
- 超高层建筑机电安装施工技术控制要点
- 卵巢癌类器官规范化建立及临床转化初步应用专家共识(2025年版)解读
- 解剖学基础课程全册教案
- 2024年煤矿重大事故隐患判定标准解读与查找方法培训课件
- 优化企业集团关联交易对账管理的研究与探讨措施实践应用探讨
- 秋季驾驶员安全培训
- 西安市城中村改造管理办法
- Unit8 Our Blue Planet 大单元整体教学设计 -2024-2025学年仁爱科普版英语七年级下册
评论
0/150
提交评论