下载此文档

操作系统内存分配算法模拟实现.doc


文档分类:IT计算机 | 页数:约25页 举报非法文档有奖
1/25
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/25 下载此文档
文档列表 文档介绍
实验名称内存分配与回收算法实现同组人姓名实验性质基本操作●验证性综合性□设计性实验日期2010-5-17实验成绩教师评价:实验预****实验操作□实验结果□实验报告□其它□教师签名:一、实验目的及要求掌握为实现多道程序并发执行,操作系统是如何通过作业调度选择作业进入内存系统如何为进入内存的作业分配内存空间,实现多道作业同时驻留内存,就绪进程队列中的多个进程是如何以分式方式共享CPU,作业运行完成离开系统时,系统如何进行内存回收,计算进程周转时间。掌握各种调度算法,以及实现所需的各种数据结构。二、实验内容根据给定的动态分区分配算法流程图,用你熟悉的计算机编程语言编写一程序,该程序实现内存的合理分配后回收。三、主要设备及软件PC、Windows2000操作系统、Linux操作系统四、实验流程、操作步骤或核心代码、(表)?按动态分区方式进行分配修改有关数据结构返回分区号及首地址空闲分区总和>=、分配算法流程出2、算法模拟实现相关数据结构定义空闲分区块类:classFreeBlock空闲分区链类:classFreeList内存分配回收算法类:classMemoryManager测试类(主类):classTestForMemManage具体实现请允许我先列出核心部分,内存分配回收算法类的实现:.;//;lassMemoryManager{ FreeListflist;//空闲分区类对象 publicMemoryManager(){ flist=newFreeList(); (); } publicvoidmemAllocation(intsize,Stringnew_job_name){//内存分配(首次适应算法) FreeBlockq=; FreeBlockp=; while(p!=null){ if(size<=0){ ("\n申请的空间不能小于1!"); break; } if(==false&&>=size){ q=newFreeBlock(-size); =size; =true; =new_job_name; =; =q; break; //完成分配} else { p=; //移动到足够分配的空闲块} } if(p==null){ if(>=size){ ("目前尚无足够大的空闲块,系统将进行重定位操作..."); relocation(); //重定向 memAllocation(size,new_job_name); //重新分配内存} else{ ("作业"+new_job_name+"内存尚未分配成功!"); } } else{ //分配内存后可能存在大小为0的空间,将其清除 ("作业"+new_job_name+"内存分配成功!"); p=; //q=; while(p!=null){ if(==0){ (p); } p=; } } } privatevoidmemRecovery(FreeBlocktarget){//内存回收 FreeBlockp=; while(p!=null){ //回收区与插入点的前一个空闲分区相邻接 if(==target&&==false){ +=; =; //回收区同时与插入点的前后两个空闲分区相邻接 if(!){ +=; =; } break; } if(p==target){ //回收区与插入点的后一空闲分区相邻接 if(!){ +=; =; } break; //若两不邻接,则直接跳出} p=; } } privatevoidr

操作系统内存分配算法模拟实现 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数25
  • 收藏数0 收藏
  • 顶次数0
  • 上传人799474576
  • 文件大小255 KB
  • 时间2020-02-02