(模板)实验2:存储器的分配与回收讲课教案_第1页
(模板)实验2:存储器的分配与回收讲课教案_第2页
(模板)实验2:存储器的分配与回收讲课教案_第3页
(模板)实验2:存储器的分配与回收讲课教案_第4页
(模板)实验2:存储器的分配与回收讲课教案_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

1、Good is good, but better carries it.精益求精,善益求善。(模板)实验2:存储器的分配与回收-实验报告学院(系)名称:计算机与通信工程学院姓名赵云鹏学号20091931专业计算机科学与技术班级2009级3班实验项目实验二:存储器的分配与回收算法实现课程名称操作系统课程代码0668036实验时间2011年11月28日第7、8节2011年12月1日第3、4节2011年12月5日第7、8节实验地点软件实验室7-216软件实验室7-219软件实验室7-215批改意见成绩教师签字:实验内容:1.模拟操作系统的主存分配,运用可变分区的存储管理算法设计主存分配和回收程序,并

2、不实际启动装入作业。(124)2.采用最先适应法、最佳适应法、最坏适应法分配主存空间。(124)3.当一个新作业要求装入主存时,必须查空闲区表,从中找出一个足够大的空闲区。若找到的空闲区大于作业需要量,这是应把它分成二部分,一部分为占用区,加一部分又成为一个空闲区。4.当一个作业撤离时,归还的区域如果与其他空闲区相邻,则应合并成一个较大的空闲区,登在空闲区表中。5.运行所设计的程序,输出有关数据结构表项的变化和内存的当前状态。实验要求:详细描述实验设计思想、程序结构及各模块设计思路;详细描述程序所用数据结构及算法;明确给出测试用例和实验结果;为增加程序可读性,在程序中进行适当注释说明;认真进行

3、实验总结,包括:设计中遇到的问题、解决方法与收获等;实验报告撰写要求结构清晰、描述准确逻辑性强;实验过程中,同学之间可以进行讨论互相提高,但绝对禁止抄袭。【实验过程记录(源程序、测试用例、测试结果及心得体会等)】源程序:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Collections;namespaceshen_2classsuit/分配主存空间的类publicvoidzxSuit(ArrayListkzfq,intneedSize)/最先适应法inti=0

4、;for(;i0)/与空闲分区大小相等Console.WriteLine(存放在第0:00块n,i+1);kzfqi=-(int)kzfqi;break;if(needSize0)/小于空闲分区大小Console.WriteLine(存放在第0:00块n,i+1);kzfq.Insert(i+1,(int)kzfqi-needSize);kzfqi=-needSize;break;if(i=kzfq.Count)Console.WriteLine(没有足够大的空闲分区来存储!n);publicvoidzSuit(ArrayListkzfq,intneedSize,boolway)/最适应法/布

5、尔变量way为true时表示最优适应法,为false时表示最差适应法inti=-1,balance;/int存储块号balance表示选择分区与目标大小的差额if(way)balance=int.MaxValue;/int.MaxValue表示int类型中最大数elsebalance=int.MinValue;/int.MinValue表示int类型中最小数for(intj=0;j0)inttempBal=(int)kzfqj-needSize;if(tempBal=0)if(way)if(tempBalbalance)balance=tempBal;i=j;if(i=-1)Console.W

6、riteLine(没有足够大的空闲分区来存储!n);elseConsole.WriteLine(存放在第0:00块n,i+1);if(balance=0)kzfqi=-(int)kzfqi;elsekzfq.Insert(i+1,(int)kzfqi-needSize);kzfqi=-needSize;classrecover/回收主存的类publicrecover(ArrayListfqlb)this.fqlb=fqlb;publicvoidfindOccupied()Console.Write(目前第);for(inti=0;ifqlb.Count;i+)if(int)fqlbi0&aft

7、erSize=0)/回收分区为最后一块且前一块空闲fqlbsite-1=fontSize+(-recSize);fqlb.RemoveAt(site);if(fontSize0)/回收分区为第一块且后一块被空闲fqlbsite=-recSize+afterSize;fqlb.RemoveAt(site+1);if(fontSize=0&afterSize0)/回收分区为第一块且后一块被占用fqlbsite=-recSize;if(fontSize0)/回收分区为中间块且前一块占用,后一块空闲fqlbsite=-recSize+afterSize;fqlb.RemoveAt(site+1);if

8、(fontSize0&afterSize0&afterSize0)/回收分区为中间块且前后两均空闲fqlbsite-1=fontSize+-recSize+afterSize;/fqlb.RemoveAt(site);/fqlb.RemoveAt(site+1);if(fontSize0&afterSize0)/回收分区为中间块且前后两均占用fqlbsite=-recSize;ArrayListfqlb;classProgramstaticvoidMain(stringargs)ArrayListfqlb=newArrayList();/模拟内存分区的集合类suitmySuit=newsuit

9、();recovermyRec=newrecover(fqlb);foreach(intsizeinnewint1010,30,35,20,15,40,80,20,20,-25)/并测试添加的10个空闲分区fqlb.Add(size);/用符号位表示分区是不占用:正数表示未使用,负数表示已占用Console.WriteLine(设置的10个空闲分区大小为:n);for(inti=0;ifqlb.Count;i+)Console.WriteLine(第0:00号分区:状态:空闲,分区大小:1n,i+1,fqlbi);Console.WriteLine(-n);Console.Write(输入工作

10、个数:);intc=Int32.Parse(Console.ReadLine();for(intn=0;nc;n+)Console.WriteLine(第0:00号分区:n,n+1);Console.Write(输入工作所需内存:);inta=Int32.Parse(Console.ReadLine();Console.Write(输入分配内存空间适应方法:1.最优适应算法,2.最差适应算法,3.最先适应算法(输入1或2或3):);intb=Int32.Parse(Console.ReadLine();switch(b)case1:mySuit.zSuit(fqlb,a,true);break

11、;case2:mySuit.zSuit(fqlb,a,false);break;case3:mySuit.zxSuit(fqlb,a);break;/mySuit.zSuit(fqlb,a,true);for(inti=0;i0)Console.WriteLine(第0:00号分区:状态:(空闲),分区大小:1n,i+1,fqlbi);elseConsole.WriteLine(第0:00号分区:状态:(占用),分区大小:1n,i+1,-(int)fqlbi);myRec.findOccupied();Console.Write(输入回收主存个数:);intv=Int32.Parse(Cons

12、ole.ReadLine();for(intj=0;jv;j+)Console.WriteLine(第0:00轮回收:n,j+1);intsite;while(true)/由用户输入要回收的块号并对异常进行处理Console.Write(要回收的主存块号为:);trysite=Int32.Parse(Console.ReadLine();if(sitefqlb.Count)Console.WriteLine(n请输入合理数值n);continue;if(int)fqlbsite-10)Console.WriteLine(n此块没有被占用n);continue;break;catch(System.Exceptionex)Console.WriteLine(n请输入合法数值!n);Console.WriteLine();site-;myRec.recMemory(1);/调用类中的回收方法for(inti=0;i0)Console.WriteLine(第0:00号分区:(空闲),大小:1n,i+1,fqlbi);elseConsole.WriteLine(第0:00号分区:(占用),大小:1n,i+1,-(int

温馨提示

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

评论

0/150

提交评论