java动态分区分配算法,操作系统

您所在的位置:网站首页 操作系统动态分区分配课程设计 java动态分区分配算法,操作系统

java动态分区分配算法,操作系统

2023-11-22 21:47| 来源: 网络整理| 查看: 265

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

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

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

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

4、忆。6、 测试结果(1)首次适应算法(2)循环首次适应算法(3)最佳适应算法(4)最坏适应算法:(5)快速适应算法:7、 附录(java)package experiment;import java.io.BufferedInputStream;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.util.Scanner;public class D_ProcessPartition private static int MaxNum = 100;/空闲分区个数private stati。

5、c int n;/作业个数private static int m;/空闲分区大小private static int FreePartition = new intMaxNum; /作业名称private static char ProcessName = new charMaxNum; /作业需求空间大小private static int ProcessNeed = new intMaxNum; /作业分配标志private static boolean state = new booleanMaxNum; /空闲分区个数private static int PartitionNum;/。

6、作业个数private static int ProcessNum;/?private static char order = new charMaxNumMaxNum;/?private static char ch = new charMaxNum;/临时变量private static int temp;/算法选择/1-首次适应算法/2-循环首次适应算法/3-最佳适应算法/4-最坏适应算法/5-快速适应算法private static int option=0;/for循环中使用private static int i;private static int j;private stati。

7、c int k;private static int d;private static Scanner stdin;public static void main(String args) throws FileNotFoundException /输入数据input();/选择算法/1-首次适应算法/2-循环首次适应算法/4-最坏适应算法/5-快速适应算法switch(option)case 1:System.out.println(对作业用首次适应算法进行空间分配:);First();output();break;case 2:System.out.println(对作业用循环首次适应算法。

8、进行空间分配:);CycleFirst();output();break;case 3:System.out.println(对作业用最佳适应算法进行空间分配:);Best();output();break;case 4:System.out.println(对作业用最坏适应算法进行空间分配:);Worst();output();break;case 5:System.out.println(对作业用快速适应算法进行空间分配:);Worst();output();break;default:System.out.println(*error!*);/输入数据public static void。

9、 input() throws FileNotFoundExceptionBufferedInputStream in = new BufferedInputStream(new FileInputStream(./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 。

10、temp)k+;temp=FreePartitionk;for(j=0;j FreePartitionj) & (!statei) temp=FreePartitionj;k=j;elsecontinue;for(d=0;d3;d+) /记录作业分配if(orderkd=0)orderkd=ProcessNamei;break;elsecontinue;FreePartitionk=FreePartitionk-ProcessNeedi;statei=true;/4最坏适应算法public static void CycleFirst() i=0;j=0;while(in) & (jm)if(。

11、ProcessNeedi = FreePartitionj) & (!statei)for(k=0;k3;k+) /记录作业分配if(orderjk=0)orderjk=ProcessNamei;break;elsecontinue;FreePartitionj=FreePartitionj-ProcessNeedi;statei=true;i+;elsej+;public static void CycleFirst() i=0;j=0;while(in) & (jm)if(ProcessNeedi = FreePartitionj) & (!statei)for(k=0;k3;k+) /记。

12、录作业分配if(orderjk=0)orderjk=ProcessNamei;break;elsecontinue;FreePartitionj=FreePartitionj-ProcessNeedi;statei=true;i+;elsej+;/5快速适应算法public static void Worst() for(i=0;im;i+)temp=FreePartition0;k=0;for(j=0;jn;j+) /按最坏适应算法找到合适的空闲分区if(ProcessNeedi = FreePartitionj) & (temp FreePartitionj) & (!statei) te。

13、mp=FreePartitionj;k=j;elsecontinue;for(d=0;d3;d+) /记录作业分配if(orderkd=0)orderkd=ProcessNamei;break;elsecontinue;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( );elseSystem.out.print(orderij);System.out.print(|n。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3