在可变分区管理方式下采用最先适应算法实现主存储器的分配和回收.doc

上传人:博****1 文档编号:558024268 上传时间:2023-02-16 格式:DOC 页数:7 大小:189.01KB
返回 下载 相关 举报
在可变分区管理方式下采用最先适应算法实现主存储器的分配和回收.doc_第1页
第1页 / 共7页
在可变分区管理方式下采用最先适应算法实现主存储器的分配和回收.doc_第2页
第2页 / 共7页
在可变分区管理方式下采用最先适应算法实现主存储器的分配和回收.doc_第3页
第3页 / 共7页
在可变分区管理方式下采用最先适应算法实现主存储器的分配和回收.doc_第4页
第4页 / 共7页
在可变分区管理方式下采用最先适应算法实现主存储器的分配和回收.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《在可变分区管理方式下采用最先适应算法实现主存储器的分配和回收.doc》由会员分享,可在线阅读,更多相关《在可变分区管理方式下采用最先适应算法实现主存储器的分配和回收.doc(7页珍藏版)》请在金锄头文库上搜索。

1、实验三、四 存储管理一、实验目的帮助学生理解在不同的存储管理方式下应如何实现主存空间的分配和回收。理解好的计算机系统不仅要有一个足够容量的、存取速度高的、稳定可靠的主存储器,而且要能够合理地分配和使用这些存储空间。 二、实验环境1、 Java环境三、实验时数:4学时四、实验内容与步骤1在可变分区管理方式下采用最先适应算法实现主存储器的分配和回收。2在可变分区管理方式下采用最佳适应算法实现主存储器的分配和回收。3在可变分区管理方式下采用最坏适应算法实现主存储器的分配和回收。要求:1。分配时输入作业号以及申请量。 2 回收时输入作业号。3 每次分配或回收之后按如下格式按照起始地址从小到大输出内存分

2、配情况。(其中只有状态为“已分配”时才有对应的作业号)起始地址长度状态作业号五、实验报告实验题目。1在可变分区管理方式下采用最先适应算法实现主存储器的分配和回收。1、2、 程序中使用的数据结构及符合说明。用Node 类模拟表示内存的当前状态。通过Node数组来开辟一组内存,然后用Link类来进行内存的连接3、 程序流程图。/ Node.javaclass Node/用Node来模拟内存的当前状态int start;int size;boolean state;int jobNo;public Node()public Node(int start,int size,boolean state,

3、int jobNo)this.start = start;this.size = size;this.state = state;this.jobNo = jobNo; public void print()/打印Node类 if (this!=null)System.out.println(起始位置+this.start+大小+this.size+状态+this.state+工作号+this.jobNo);/Link.javaclass Link /用Link类来模拟连接各个内存,并添加作业public void addJob(int size,int jobNo,Node a)for(in

4、t i=0;ia.length;i+)if(ai!=null) /当前内存有内容时if(sizeai.size&ai.state=false) /判断是否符合条件ai.size=ai.size-size; /当前内存分配大小给作业if(ai+1=null) /当下一块内存还没有使用时 ai+1=new Node(size+ai.start,size,true,jobNo);/使用该内存 else /当下一块内存已被使用,那么继续寻找一块还没被使用的内存for(int j=i+1;ja.length-1;j+) if(aj=null) aj=new Node(size+aj-1.start,si

5、ze,true,jobNo); break; /当找到未被使用的内存及填入内容后跳出循环ai.print();/打印输出当前Link中各个内存块的使用情况public void delete(Node a,int jobNo)/删除某一个进程,当该进程被删除后,进程所在内存的状态变为falsefor(int i=0;ia.length;i+)if(ai!=null)if(ai.jobNo=jobNo)/ai.size=0;ai.state=false;ai.jobNo=0;if(ai!=null)ai.print();public void back(Node a) /进行状态为false的内

6、存的回收删除内存状态为false的内存节点。并将该节点与起始点结合for(int i=1;ia.length;i+)if(ai!=null)if(ai.state=false)a0.size=a0.size+ai.size;ai=null;for(int j=0;ja.length;j+)if(aj!=null)aj.print();/OSJob.javapublic class OSJobpublic static void main(String args) Node jobArray=new Node70; jobArray0=new Node(0,25,false,0);Link l

7、= new Link();System.out.println(.起始的内存.);jobArray0.print();System.out.println(.增加第一个作业后的内存情况.);l.addJob(4,1,jobArray);System.out.println(.增加第二个作业后的内存情况.);l.addJob(10,2,jobArray);System.out.println(.增加第三个作业后的内存情况.);l.addJob(10,3,jobArray);System.out.println(.删除作业2后的内存情况.);l.delete(jobArray,2);System.out.println(.此后再添加作业4后的内存情况.);l.addJob(5,4,jobArray);System.out.println(.进行空闲内存的回收.);l.back(jobArray);增加作业的流程图回收内存的流程图4、 源程序并附上注释。5、 程序运行的输入数据以及运行结果。1

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号