




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、动态分区存储管理方式的主存分配回收动态分区存储管理方式的主存分配回收、实验目的深入了解动态分区存储管理方式主存分配回收的实现。二、实验要求编写程序完成动态分区存储管理方式的主存分配回收的实现。实验具体包括:首先确定主存空间分配表;然后采用最优适应算法完成主存空间的分配和回收;最后编写主函数对所做工作进行测试。三、实验步骤实现动态分区的分配和回收,主要考虑的问题有三个:第一,设计记录主存使用情况的数据表格,用来记录空闲区和作业占用的区域;第二,在设计的数据表格基础上设计主存分配算法:第三,在设计的数据表格基础上设计主存回收算法。首先,考虑第一个问题:设计记录主存使用情况的数据表格,用来记录空闲区
2、和作业占用的区域。由于动态分区的大小是由作业需求量决定的,故分区的长度是预先不固定的,且分区的个数也随主存分配和回收变动。总之,所有分区情况随时可能发生变化,数据表格的设计必须和这个特点相适应。由于分区长度不同,因此设计的表格应该包括分区在主存中的起始地址和长度。由于分配时空闲区有时会变成两个分区:空闲区和已分分区,回收主存分区时,可能会合并空闲分区,这样如果整个主存采用一张表格记录已分分区和空闲区,就会使表格操作繁琐。主存分配时查找空闲区进行分配,然后填写已分配区表,主要操作在空闲区:某个作业执行完后,将该分区变成空闲区,并将其与相邻的空闲区合并,主要操作也在空闲区。由此可见,主存的分配和回
3、收主要是对空闲区的操作。这样为了便于对主存空间的分配和回收,就建立两张分区表记录主存使用情况.一张表格记录作业占用分区的“已分配区表”一张是记录空闲区的“空闲区表”。这两张表的实现方法一般有两种,一种是链表形式,一种是顺序表形式。在试验中,采用顺序表形式,用数组模拟。由于顺序表的长度必须是提前固定,所以无论是“已分配区表”还是“空闲区表”都必须事先确定长度。他们的长度必须是系统可能的最大项数,系统运行过程中才不会出错,因而在多数情况下,无论是“已分配区表”还是“空闲区表”都有空闲栏目。已分配区表中除了分区起始地址、长度外,也至少还有一项“标志”,如果是空闲栏目,内容为“空”,如果为某个作业占用
4、分区的登记项,内容为该作业的作业名;空闲区表中除了分区起始地址、长度外,也要有一项“标志”,如果是空闲栏目,内容为“空”,如果为某个空闲区的登记项,内容为“未分配”。在实际系统中,这两表格的内容可能还要多,实验中仅仅使用上述必须的数据。为此,“已分配区表”和“空闲区表”可变分区管理方式将内存除操作系统占用区域外的空间看做一个大的空闲区。当作业要求装入内存时,根据作业需要内存空间的大小查询内存中的各个空闲区,当从内存空间中找到一个大于或等于该作业大小的内存空闲区时,选择其中一个空闲区,按作业需求量划出一个分区装人该作业,作业执行完后,其所占的内存分区被收回,成为一个空闲区。如果该空闲区的相邻分区
5、也是空闲区,则需要将相邻空闲区合并成一个空闲区。四、实验结果程序代码:#include<iostream.h>#include<iomanip.h>floatminsize=5;intcount1=0;intcount2=0;#definem10#definen10structfloataddress;floatlength;intflag;used_tablen;structfloataddress;floatlength;intflag;free_tablem;voidinitialize(void);intdistribute(int,float);intrecy
6、cle(int);voidshow();voidinitialize(void)inta;for(a=0;a<=n-1;a+)used_tablea.flag=0;free_table0.address=1000;free_table0.length=1024;free_table0.flag=1;intdistribute(intprocess_name,floatneed_length)inti,k=-1;floatads,len;intcount=0;i=0;while(i<=m-1)(if(free_tablei.flag=1&&need_length<
7、;=free_tablei.length)(count+;if(count=1|free_tablei.length<free_tablek.length)k=i;i=i+1;if(k!=-1)(if(free_tablek.length-need_length)<=minsize)(free_tablek.flag=0;ads=free_tablek.address;len=free_tablek.length;else(ads=free_tablek.address;len=need_length;free_tablek.address+=need_length;free_ta
8、blek.length-=need_length;i=0;while(used_tablei.flag!=0)if(i<=n-1)used_tablei.address=ads;used_tablei.length=len;used_tablei.flag=process_name;count1+;elseif(free_tablek.flag=0)free_tablek.flag=1;free_tablek.address=ads;free_tablek.length=len;elsefree_tablek.address=ads;free_tablek.length+=len;cou
9、t<<"内存分配区已满,分配失败!n"return0;elsecout<<"无法为该作业找到合适分区!n"return0;returnprocess_name;intrecycle(intprocess_name)(inty=0;floatrecycle_address,recycle_length;inti,j,k;intx;while(y<=n-1&&used_tabley.flag!=process_name)y=y+1;if(y<=n-1)recycle_address=used_tabley.
10、address;recycle_length=used_tabley.length;used_tabley.flag=0;count2+;elsecout<<”该作业不存在!n"return0;j=k=-1;i=0;while(!(i>=m|(k!=-1&&j!=-1)if(free_tablei.flag=1)if(free_tablei.address+free_tablei.length)=recycle_address)k=i;if(recycle_address+recycle_length)=free_tablei.address)j=i
11、;i=i+1;)if(k!=-1)(if(j!=-1)free_tablek.length+=free_tablej.length+recycle_length;free_tablej.flag=0;)elsefree_tablek.length+=recycle_length;)elseif(j!=-1)free_tablej.length+=recycle_length;free_tablej.address=recycle_address;)elsex=0;while(free_tablex.flag!=0)x=x+1;if(x<=m-1)free_tablex.length=re
12、cycle_length;free_tablex.flag=1;)elseused_tabley.flag=process_name;cout<<"空闲区已满,回收失败!n"return0;)returnprocess_name;)voidshow()(cout<<"空闲区n”;for(inti=0;i<=count2;i+)cout<<"地址:"<<free_tablei.address<<""<<"作业长度:"<<
13、;free_tablei.length<<""<<"状态:"<<free_tablei.flag<<endl;cout<<"已分配区n"for(intj=0;j<count1;j+)cout<<"地址:"<<used_tablej.address<<""<<"作业长度:"<<used_tablej.length<<""&
14、lt;<"作业名:"<<used_tablej.flag<<endl;)voidmain()(intchoice;intjob_name;floatneed_memory;boolexitFlag=false;cout<<"动态分区分配方式的模拟n"initialize();while(!exitFlag)(cout<<"1:分配内存2:回收内存n"cout<<"3:查看分配0:退出n"cin>>choice;switch(choice)
15、(case0:exitFlag=true;break;case 1:cout<<”请输入作业名和所需内存:"cin>>job_name>>need_memory;distribute(job_name,need_memory);break;case 2:intID;cout<<"请输入您要释放的分区号:"cin>>ID;recycle(ID);break;case 3:show();break;内存分配回收实现截图(1)、假定系统内存分配表允许的最大作业项为10,当分配超过10时,提示“内存分配区已满,分
16、配失败”f'C:DocuBeTitsandfetHingstAdMinistratzr臬面,臬面I区配分已H12345i787l名名名名名名名名名名业业业业业业业业业业urlll!一巴111匚一三三hi三#+44092000一5487+12112211224g屏思思思凰凰原M=医M:+长长长-fe长<长长长长+业业业业业业业业业业411二1一EEM1BEL二1F,三1B0Q1Q10103910116110811101111G113日1158一«址如此如此址如此4位吊吊11巾勺廿巾七廿一廿11U1.f-rrj.r-r-iJrta-rEa-F-h1=分配内存2:回收内存3;
17、查看分配目;退由1125i入您的操作也主:脸龈蹴勰如U=l(2)、回收作业所占内存时,当输入的作业名不存在,回收失败,提示“该作业不存在”。"C;Docnwents:请地入您的瞟作:2苗输入您要驿故的分区号3d作业不存在I:1185作业长度:839状态:11;分配内存3:查看分配2:回收内存。:退出什十寸寸十寸十+*+*(3)、当要释放某个作业时,将已分配表中此作业的标志置为'0',并在空闲区做相应登记。空间区lb-b-r-bi-1-地址t1082作业长度:421;分配内存上查看分由己2;回收内存电:退出1原度度度址址址址j人您要释放的分区号?21=分配内存2=回收内
18、存3=查看分配必退LL请输入您的操作:11=+-*+空闲区+4-+地址:1B82:也址:1B10+也也也也卜u-r匕r匚-rJ;1-*-+-*-+*-+-H-*-+4-+-«-*-H-*-+-K-«-+ISIS16381655区一1B招1727配一1:反反II=分H长<长长;业业业业一匚£TEr*+1034*41名名名名I业业业业五、总结核心算法:/最优分配算法实现的动态分区intdistribute(intprocess_name,floatneed_length)(inti,k=-1;/k用于定位在空闲表中选择的未分配栏floatads,len;intc
19、ount=0;i=0;/核心的查找条件,找到最优空闲区while(i<=m-1)/循环找到最佳的空闲分区if(free_tablei.flag=1&&need_length<=free_tablei.length)Icount+;if(count=1|free_tablei.length<free_tablek.length)k=i;i=i+1;if(k!=-1)if(free_tablek.length-need_length)<=minsize)/整个分配free_tablek.flag=0;ads=free_tablek.address;len=free_tablek.length;else切割空闲区ads=free_tablek.address;len=need_length;free_tablek.address+=need_length;free_tablek.length-=need_length;i=0;/循环寻找内存分配表中标志为空栏目的项while(used_tablei.flag!=0)i=i+1;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司月度管理例会汇报材料
- 2025年中考复习地理简答题模板
- 教研组活动总结06
- 基于教师专业发展的职前英语教师教育课程设置研究
- 2024年特许金融分析师预测试题及答案
- 护理搬运技术相关技术
- 文化产业管理课程
- 基金的流动性和收益性分析试题及答案
- 骨科临床解剖学
- 珍贵经验分享:CFA试题及答案
- 先进个人申报登记表
- 2022-2023学年广东省江门市新会区会城镇城南小学部编版一年级下册3月月考语文试卷
- 电影赏析绿皮书课件(内容详细)
- 轴线-对话场面的拍摄
- 中国电信营业厅服务规范与基础管理指导手册
- 养老护理员培训 -职业道德 法规
- 湖南省2021年普通高等学校对口招生考试英语
- 《CT检查技术》课件-CT图像后处理
- 控制性详细规划城市用地分类和代号
- 中学爱国主义教育主题班会PPT
- DAM10KW中波发射机各单元的检测与调整指导示意图
评论
0/150
提交评论