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

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

ID:47539594

大小:253.00 KB

页数:15页

时间:2020-01-14

操作系统内存分配算法模拟实现_第1页
操作系统内存分配算法模拟实现_第2页
操作系统内存分配算法模拟实现_第3页
操作系统内存分配算法模拟实现_第4页
操作系统内存分配算法模拟实现_第5页
资源描述:

《操作系统内存分配算法模拟实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、.实验名称内存分配与回收算法实现同组人姓名实验性质□基本操作●验证性□综合性□设计性实验日期2010-5-17实验成绩教师评价:实验预习□实验操作□实验结果□实验报告□其它□教师签名:一、实验目的及要求1)掌握为实现多道程序并发执行,操作系统是如何通过作业调度选择作业进入内存2)系统如何为进入内存的作业分配内存空间,实现多道作业同时驻留内存,就绪进程队列中的多个进程是如何以分式方式共享CPU,作业运行完成离开系统时,系统如何进行内存回收,计算进程周转时间。3)掌握各种调度算法,以及实现所需的各种数据结构。二、实

2、验内容根据给定的动态分区分配算法流程图,用你熟悉的计算机编程语言编写一程序,该程序实现内存的合理分配后回收。三、主要设备及软件PC、Windows2000操作系统、Linux操作系统word范文.四、实验流程、操作步骤或核心代码、算法片段请求分配u.size分区检索空闲分区链(表)找到大于u.size的可用分区否?按动态分区方式进行分配修改有关数据结构返回分区号及首地址空闲分区总和>=u.size进行紧筹形成连续空闲区修改有关数据结构无法分配返回1、分配算法流程出word范文.2、算法模拟实现相关数据结构定义空

3、闲分区块类:classFreeBlock空闲分区链类:classFreeList内存分配回收算法类:classMemoryManager测试类(主类):classTestForMemManage具体实现请允许我先列出核心部分,内存分配回收算法类的实现:packagecom.kaiping.memorymanage;//个人包importjava.util.Scanner;publicclassMemoryManager{FreeListflist;//空闲分区类对象publicMemoryManager(){f

4、list=newFreeList();flist.InitFBlock();}publicvoidmemAllocation(intsize,Stringnew_job_name){//内存分配(首次适应算法)FreeBlockq=flist.head;FreeBlockp=flist.head.next;while(p!=null){if(size<=0){System.out.println("申请的空间不能小于1!");break;}if(p.state==false&&p.size>=size){q

5、=newFreeBlock(p.size-size);p.size=size;p.state=true;p.job_name=new_job_name;q.next=p.next;p.next=q;break;//完成分配word范文.}else{p=p.next;//移动到足够分配的空闲块}}if(p==null){if(flist.flistsize>=size){System.out.println("目前尚无足够大的空闲块,系统将进行重定位操作...");relocation();//重定向memAll

6、ocation(size,new_job_name);//重新分配内存}else{System.out.println("作业"+new_job_name+"内存尚未分配成功!");}}else{//分配内存后可能存在大小为0的空间,将其清除System.out.println("作业"+new_job_name+"内存分配成功!");p=flist.head.next;//q=flist.head;while(p!=null){if(p.size==0){flist.deleteFBlock(p);}p=p.

7、next;}}}privatevoidmemRecovery(FreeBlocktarget){//内存回收FreeBlockp=flist.head.next;word范文.while(p!=null){//回收区与插入点的前一个空闲分区相邻接if(p.next==target&&p.state==false){p.size+=target.size;p.next=target.next;//回收区同时与插入点的前后两个空闲分区相邻接if(!p.next.state){p.size+=p.next.size;

8、p.next=p.next.next;}break;}if(p==target){//回收区与插入点的后一空闲分区相邻接if(!p.next.state){target.size+=p.next.size;target.next=p.next.next;}break;//若两不邻接,则直接跳出}p=p.next;}}privatevoidrelocation(){//空闲资源重定向,回

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。