欢迎来到天天文库
浏览记录
ID:26118997
大小:275.25 KB
页数:17页
时间:2018-11-24
《操作系统内存分配算法模拟实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验报告册院系名称:计算机科学学院课程名称:操作系统实验学期2009年至2010年第二学期专业班级:计算机科学与技术2008级1班姓名:HORACE学号:2008110108指导教师:高老师实验最终成绩:实验报告须知1.学生填写实验报告应按规范填写,填写格式见由任课老师给出的实验报告样本;2.学生应填写的内容包括:封面相关栏目、第一页中‘本学期(年)开设实验课程情况一览表’中的实验名称、学时数;每次报告中的实验性质、同组人姓名、实验日期、以及实验报告中的一至五项;3.教师填写内容为:实验评价、每次报告成绩、第一页中‘本学期
2、(年)开设实验课程情况一览表’中成绩、及封面的实验最终成绩;4.学生实验结束后,教师应对学生实验结果进行核实,学生方可离开实验室。5、实验成绩等级分为(90-100分)优,(80-89分)良,(70-79分)中,(60-69分)及格,(59分)不及格。6.本实验册应妥善保管,本课程实验结束后应交回实验室实验报告(2)实验名称内存分配与回收算法实现同组人姓名实验性质□基本操作●验证性□综合性□设计性实验日期2010-5-17实验成绩教师评价:实验预习□实验操作□实验结果□实验报告□其它□教师签名:一、实验目的及要求1)掌握为
3、实现多道程序并发执行,操作系统是如何通过作业调度选择作业进入内存2)系统如何为进入内存的作业分配内存空间,实现多道作业同时驻留内存,就绪进程队列中的多个进程是如何以分式方式共享CPU,作业运行完成离开系统时,系统如何进行内存回收,计算进程周转时间。3)掌握各种调度算法,以及实现所需的各种数据结构。二、实验内容根据给定的动态分区分配算法流程图,用你熟悉的计算机编程语言编写一程序,该程序实现内存的合理分配后回收。三、主要设备及软件PC、Windows2000操作系统、Linux操作系统四、实验流程、操作步骤或核心代码、算法片段
4、请求分配u.size分区检索空闲分区链(表)找到大于u.size的可用分区否?按动态分区方式进行分配修改有关数据结构返回分区号及首地址空闲分区总和>=u.size进行紧筹形成连续空闲区修改有关数据结构无法分配返回1、分配算法流程出2、算法模拟实现相关数据结构定义空闲分区块类:classFreeBlock空闲分区链类:classFreeList内存分配回收算法类:classMemoryManager测试类(主类):classTestForMemManage具体实现请允许我先列出核心部分,内存分配回收算法类的实现:packag
5、ecom.kaiping.memorymanage;//个人包importjava.util.Scanner;publicclassMemoryManager{FreeListflist;//空闲分区类对象publicMemoryManager(){flist=newFreeList();flist.InitFBlock();}publicvoidmemAllocation(intsize,Stringnew_job_name){//内存分配(首次适应算法)FreeBlockq=flist.head;FreeBlockp=
6、flist.head.next;while(p!=null){if(size<=0){System.out.println("申请的空间不能小于1!");break;}if(p.state==false&&p.size>=size){q=newFreeBlock(p.size-size);p.size=size;p.state=true;p.job_name=new_job_name;q.next=p.next;p.next=q;break;//完成分配}else{p=p.next;//移动到足够分配的空闲块}}if(
7、p==null){if(flist.flistsize>=size){System.out.println("目前尚无足够大的空闲块,系统将进行重定位操作...");relocation();//重定向memAllocation(size,new_job_name);//重新分配内存}else{System.out.println("作业"+new_job_name+"内存尚未分配成功!");}}else{//分配内存后可能存在大小为0的空间,将其清除System.out.println("作业"+new_job_name
8、+"内存分配成功!");p=flist.head.next;//q=flist.head;while(p!=null){if(p.size==0){flist.deleteFBlock(p);}p=p.next;}}}privatevoidmemRecovery(FreeBlocktarget){//内
此文档下载收益归作者所有