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

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

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

1、实验三、实验三、四四 存储管理存储管理一、实验目的一、实验目的帮助学生理解在不同的存储管理方式下应如何实现主存空间的分配和回收。理解 好的计算机系统不仅要有一个足够容量的、存取速度高的、稳定可靠的主存储器,而且要能够合理地分配和使用这些存储空间。 二、实验环境二、实验环境1、 Java 环境三、实验时数:三、实验时数:4 学时学时四、实验内容与步骤四、实验内容与步骤1在可变分区管理方式下采用最先适应算法实现主存储器的分配和回收。在可变分区管理方式下采用最先适应算法实现主存储器的分配和回收。 2在可变分区管理方式下采用最佳适应算法实现主存储器的分配和回收。在可变分区管理方式下采用最佳适应算法实现

2、主存储器的分配和回收。 3在可变分区管理方式下采用最坏适应算法实现主存储器的分配和回收。在可变分区管理方式下采用最坏适应算法实现主存储器的分配和回收。 要求:要求:1。分配时输入作业号以及申请量。分配时输入作业号以及申请量。2 回收时输入作业号。回收时输入作业号。 3 每次分配或回收之后按如下格式按照起始地址从小到大输出内存分配情况。每次分配或回收之后按如下格式按照起始地址从小到大输出内存分配情况。 (其中只有状态为(其中只有状态为“已分配已分配”时才有对应的作业号)时才有对应的作业号)起始 地址长度状态作业号五、实验报告五、实验报告实验题目。1在可变分区管理方式下采用最先适应算法实现主存储器

3、的分配和回在可变分区管理方式下采用最先适应算法实现主存储器的分配和回 收。收。1、 2、 程序中使用的数据结构及符合说明。 用 Node 类模拟表示内存的当前状态。通过 Node 数组来开辟一组内存,然后用 Link 类来进行内存的连接3、 程序流程图。1/ Node.java class Node/用 Node 来模拟内存的当前状态 int start; int size; boolean state; int jobNo; public Node() public Node(int start,int size,boolean state,int jobNo) this.start = s

4、tart; 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.java class Link /用 Link 类来模拟连接各个内存, 并添加作业 public void addJob(int size,int jobNo,Node a) for(int

5、 i=0;ia.length;i+) if(ai!=null) /当前内存有内容时 if(sizeai.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,size,true,jobNo);break; /当找到未被使用的内存及填入内容后跳出循环2

6、ai.print();/打印输出当前 Link 中各个内存块的使用情况 public void delete(Node a,int jobNo)/删除某一个进程,当该进程被删除后,进程所在 内存的状态变为 false for(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 的内存的回收删除内存状态为 false 的内存节点。并将该节

7、点与起始点结合 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(); 3 /OSJob.java public class OSJob public static void main(String args)Node jobArray=new Node70;jobArray0=new Node(0,25,false,0); Link l = new Link();

8、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); 增加作业的流程图从头开始查表ai!=null?sizeai.size&ai.state=fals e?从该分区中划出一 块大小的 分区判断下一节点是否为空添加所申请作业的内存节 点继续向下查找继续检索下一节点结束回收内存的流程图从头开始查找判断状态是否为节点大小送给起始点向下查找结束4、 源程序并附上注释。 5、 程序运行的输入数据以及运行结果。6

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

当前位置:首页 > 生活休闲 > 科普知识

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