在可变分区管理方式下采用最先适应算法实现主存储器的分配和回收_第1页
在可变分区管理方式下采用最先适应算法实现主存储器的分配和回收_第2页
在可变分区管理方式下采用最先适应算法实现主存储器的分配和回收_第3页
在可变分区管理方式下采用最先适应算法实现主存储器的分配和回收_第4页
在可变分区管理方式下采用最先适应算法实现主存储器的分配和回收_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

实验三、!1!存储管理一、实验目的帮助学生理解在不同的存储管理方式下应如何实现主存空间的分配和回收。理解好的计算机系统不仅要有一个足够容量的、存取速度高的、稳定可靠的主存储器,而且要能够合理地分配和使用这些存储空间。二、 实验环境1、Java环境三、 实验时数:4学时、实验内容与步骤在可变分区管理方式下采用最先适应算法实现主存储器的分配和回收。在可变分区管理方式下采用最佳适应算法实现主存储器的分配和回收。在可变分区管理方式下采用最坏适应算法实现主存储器的分配和回收。要求:1。分配时输入作业号以及申请量。回收时输入作业号。3.每次分配或回收之后按如下格式按照起始地址从小到大输出内存分配情况。(其中只有状态为“已分配”时才有对应的作业号)起始地址长度状态作业号五、实验报告实验题目。1.在可变分区管理方式下采用最先适应算法实现主存储器的分配和回收。1、2、程序中使用的数据结构及符合说明。用Node类模拟表示内存的当前状态。通过Node数组来开辟一组内存,然后用Link类来进行内存的连接3、程序流程图。//Node.javaclassNode(//RNode来模拟内存的当前状态intstart;intsize;booleanstate;intjobNo;publicNode()()publicNode(intstartjntsize,booleanstatejntjobNo)(tlus.stait=start;tlus.size=size;tlus.state=state;tlus.jobNo=jobNo;)publicvoidpiint()(//打印Node类if(tins!=null)(System.out.printlii(n起始位置”+this.start十”大小n+this.size+n状态M+tliis.state+"工作号”十this.jobNo);))};/.Liiik.javaclassLuik( 〃用Link类来模拟连接各个内存,并添加作业publicvoidaddJob(intsize,intjobNo,Nodea[])(fbr(mti=O;i<a.length;i++)(if(a[i]!=null)( 〃当前内存有内容时if(size<a[i].size&&a[i].state==false)(//判断是否符合条件a[i].size=a[i].size-size; 〃当前内存分配大小给作业if(a[i+l]==null)( 〃当下一块内存还没有使用时a[i+l]=newNode(size+a[i].start,size,true,jobNo);//使用该内存)else( 〃当下一块内存己被使用,那么继续寻找一块还没被使用的内存fbi(intj=i+1;j<a.length-l;j-h-)(iRa[)]==null){a[j]=newNode(size+a[j-l].start,sizejmejobNo);break;〃当找到未被使用的内存及填入内容后跳出循环}))}a[i].prmt();//打印输出当前Link中各个内存块的使用情况))}publicvoiddelete(Nodea[],mtjobNo)(//ffl]除某一个进程,当该进程被删除后,进程所在内存的状态变为falsefbr(mti=O;i<a.lengtli;i++)(if(a[i]!=null){if(a[i].jobNo=jobNo)(//a[i].size=0;a[i].state=false;a[i].jobNo=0;)if(a[i]!=null)(a[i].prmt();)}))publicvoidback(Nodea[])( 〃进行状态为false的内存的回收删除内存状态为false的内存节点。并将该节点与起始点结合fbr(mti=l;i<a.length;i++)(if(a[i]!=null){if(a[i].state=false)(a[0].size=a[0].size+a[i].size;a[i]=null;)})fbr(mtj=O;j<a.length;j++)(if(a|j]!=null){a|j].prmt0;}}//OSJob.javapublicclassOSJob(publicstaticvoidmain(Stimgaigs[])(NodejobAiiay[]=newNode[70];jobAnay[0]=newNode(0,25,fhlse,0);Link1=newLnik();TOC\o"1-5"\h\zSystem.out.pimtlii(" 起始的内存 ");jobAnay[0].pnnt();System.out.prmtlii(" 增加第一个作业后的内存情况 *');l.addJob(4,1,jobAiiay);System.out.prmtlii(" 增加第二个作业后的内存情况 ,');LaddJob(10,2jobAiTay);System.out.prmtlii(" 增加第三个作业后的内存情况 ,');LaddJob(10,3jobAiray);System.out.println(M 删除作业2后的内存情况 ”);Ldelete(jobAiTayl2);System.out.prmtlii(" 此后再添加作业4后的内存情况 ");LaddJob(5,4,jobAnay);System.out.prmtlii(" 进行空闲内存的回收 ”);Lback(jobAnay);)}增加作业的流程图

回收内存的流程图从头开始查找Y4、 源程序并附上注释。5、 程序运行的输入数据以及运行结果。D:X>jauacOSJob.jaua存铲一:s作工E*■.台SI曾SI工散se工Lie勤eT工ueuelk2eT工IsLieIf1ef1eFfsel'r*sear 1uttfeiLufta*态态:#a tdd大大04BM位位A.b4b己-己-大大4t041S>B位位位起起起4£11彳—J--3J匚匚ee-JrtrJEe.J1a安闲se.eT

tr空al叩£七TV&.八余Ft态态后Fatl&态st一rfath态称态态蒙野心态蒸优态态榄状牌野态态基Hr八Hr-八00册犬.代00U大犬#0廿拄代代0也\\dd/s/UVV.V」\」\寸-1/H/440412WSWM位位堂在女女女女己i己-己-己-I-4-正吏击走、、dd/.1/VVVV弋弋-14J-1/T-X440412l#s位位位位4b命命』□,己-RJ-nJ-己

温馨提示

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

评论

0/150

提交评论