操作系统 动态分区分配算法课程设计 java版

上传人:第*** 文档编号:57515291 上传时间:2018-10-22 格式:PDF 页数:13 大小:175.05KB
返回 下载 相关 举报
操作系统 动态分区分配算法课程设计 java版_第1页
第1页 / 共13页
操作系统 动态分区分配算法课程设计 java版_第2页
第2页 / 共13页
操作系统 动态分区分配算法课程设计 java版_第3页
第3页 / 共13页
操作系统 动态分区分配算法课程设计 java版_第4页
第4页 / 共13页
操作系统 动态分区分配算法课程设计 java版_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《操作系统 动态分区分配算法课程设计 java版》由会员分享,可在线阅读,更多相关《操作系统 动态分区分配算法课程设计 java版(13页珍藏版)》请在金锄头文库上搜索。

1、湖湖 南南 文文 理理 学学 院院 实实 验验 报报 告告课程名称操作系统课程设计实验名称存储管理动态分区分配算法的模拟成绩学生姓名曹乐专业计算机班级、学号13101 18同组者姓名实验日期12.211 1、实验目的实验目的通过这次实验,加深对动态分区分配算法的理解,进一步掌握首次适应算法、循环首次适应算法、最佳适应算法、最坏适应算法和快速适应算法的实现方法。2 2、试验内容试验内容问题描述:问题描述:设计程序模拟四种动态分区分配算法:首次适应算法、循环首次适应算法、最佳适应算法和最坏适应算法的工作过程。假设内存中空闲分区个数为 n,空闲分区大小分别为 P1, ,Pn,在动态分区分配过程中需要

2、分配的进程个数为 m(mn) ,它们需要的分区大小分别为 S1, ,Sm, 分别利用四种动态分区分配算法将 m 个进程放入 n 个空闲分区,给出进程在空闲分区中的分配情况。3 3、程序要求程序要求:1)利用首次适应算法、循环首次适应算法、最佳适应算法和最坏适应算法四种动态分区分配算法模拟分区分配过程。2) 模拟四种算法的分区分配过程, 给出每种算法进程在空闲分区中的分配情况。3)输入:空闲分区个数 n,空闲分区大小 P1, ,Pn,进程个数 m,进程需要的分区大小 S1, ,Sm,算法选择 1-首次适应算法,2-循环首次适应算法,3-最佳适应算法,4-最坏适应算法,5-快速适应算法。4 4、需

3、求分析需求分析(1)(1) 输入的形式和输入值的范围输入的形式和输入值的范围算法选择空闲分区个数空闲分区大小(KB)作业个数作业名称作业大小(KB)(2)(2) 输出的形式输出的形式最终内存空闲分区的分配情况5 5、调试分析调试分析通过这次课程设计我练习了用JAVA写系统软件,对OS中可变分区存储管理有了更深刻的了解。在写程序的时候也遇到了一些困难。比如在设计数据结构时特别犹豫,总想找一个很合适的。但是,后来才知道,关键要多尝试,而空想是没有用的。最后我证实了自己的设计的合理性。还有为了使程序更健壮,我尝试着将程序中的输入部分全部改为字符(串)。很遗憾的是因为时间问题,没有把这个模拟程序写成动

4、画形式,还可以加几句代码后实现动态的增加作业。通过本次实验, 深入理解了动态分区分配算法的思想, 培养了自己的动手能力,通过实践加深了记忆。6 6、测试结果测试结果(1)(1)首次适应算法首次适应算法(2)(2)循环首次适应算法循环首次适应算法(3)(3)最佳适应算法最佳适应算法(4)(4)最坏适应算法最坏适应算法: :(5 5)快速适应算法:7 7、附录附录(java)(java)package experiment;import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.FileN

5、otFoundException; import java.util.Scanner;public class D_ProcessPartition private static int MaxNum = 100; /空闲分区个数private static int n; /作业个数 private static int m; /空闲分区大小 private static int FreePartition = new intMaxNum; /作业名称 private static char ProcessName = new charMaxNum; /作业需求空间大小 private sta

6、tic int ProcessNeed = new intMaxNum; /作业分配标志 private static boolean state = new booleanMaxNum; /空闲分区个数 private static int PartitionNum; /作业个数 private static int ProcessNum; /? private static char order = new charMaxNumMaxNum; /? private static char ch = new charMaxNum; /临时变量 private static int temp;

7、 /算法选择 /1-首次适应算法 /2-循环首次适应算法 /3-最佳适应算法 /4-最坏适应算法 /5-快速适应算法 private static int option=0;/for循环中使用 private static int i; private static int j; private static int k; private static int d;private static Scanner stdin;public static void main(String args) throws FileNotFoundException /输入数据 input();/选择算法 /

8、1-首次适应算法 /2-循环首次适应算法/4-最坏适应算法 /5-快速适应算法 switch(option) case 1: System.out.println(“对作业用首次适应算法进行空间分配:“); First(); output(); break; case 2: System.out.println(“对作业用循环首次适应算法进行空间分配:“); CycleFirst(); output(); break; case 3: System.out.println(“对作业用最佳适应算法进行空间分配:“); Best(); output(); break; case 4: System

9、.out.println(“对作业用最坏适应算法进行空间分配:“); Worst(); output(); break; case 5: System.out.println(“对作业用快速适应算法进行空间分配:“); Worst(); output(); break;default: System.out.println(“*error!*“); /输入数据 public static void input() throws FileNotFoundException BufferedInputStream in = new BufferedInputStream(new FileInput

10、Stream( “./file/04“); System.setIn(in); stdin = new Scanner(System.in);/算法选择 /1-首次适应算法 /2-循环首次适应算法 /3-最佳适应算法 /4-最坏适应算法 /5-快速适应算法 option = stdin.nextInt();/请输入空闲分区个数 n = stdin.nextInt(); /请依次输入空闲分区大小(KB) for(i=0 ; i temp) k+; temp=FreePartitionk; for(j=0;j FreePartitionj) k=j; else continue; for(d=0;

11、d3;d+)/记录作业分配 if(orderkd=0) orderkd=ProcessNamei; break; else continue; FreePartitionk=FreePartitionk-ProcessNeedi; statei=true; /4最坏适应算法 public static void CycleFirst() i=0; j=0; while(in) k3;k+)/记录作业分配 if(orderjk=0) orderjk=ProcessNamei; break; else continue; FreePartitionj=FreePartitionj-ProcessN

12、eedi; statei=true; i+; else j+; public static void CycleFirst() i=0; j=0; while(in) k3;k+)/记录作业分配 if(orderjk=0) orderjk=ProcessNamei; break; else continue; FreePartitionj=FreePartitionj-ProcessNeedi; statei=true; i+; else j+; /5快速适应算法 public static void Worst() for(i=0;im;i+) temp=FreePartition0; k=

13、0; for(j=0;jn;j+) /按最坏适应算法找到合适的空闲分区 if(ProcessNeedi=FreePartitionj) k=j; else continue; for(d=0;d3;d+)/记录作业分配 if(orderkd=0) orderkd=ProcessNamei; break; else continue; FreePartitionk=FreePartitionk-ProcessNeedi; statei=true; /结果输出 public static void output() for(i=0;in;i+) System.out.print(“|“); for(j=0;j3;j+) if(orderij=0) System.out.print(“); else System.out.print(orderij); System.out.print(“|n“);

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

当前位置:首页 > 行业资料 > 教育/培训

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