操作系统_动态分区分配算法课程设计_java版_第1页
操作系统_动态分区分配算法课程设计_java版_第2页
操作系统_动态分区分配算法课程设计_java版_第3页
操作系统_动态分区分配算法课程设计_java版_第4页
操作系统_动态分区分配算法课程设计_java版_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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 stat

5、ic 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 stat

7、ic 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.printl

8、n("对作业用循环首次适应算法进行空间分配:");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();brea

9、k;default:System.out.println("*error!*");/输入数据public static void input() throws FileNotFoundExceptionBufferedInputStream in = new BufferedInputStream(new FileInputStream("./file/04");System.setIn(in);stdin = new Scanner(System.in);/算法选择/1-首次适应算法/2-循环首次适应算法/3-最佳适应算法/4-最坏适应算法/5-快速适

10、应算法option = stdin.nextInt();/请输入空闲分区个数n = stdin.nextInt();/请依次输入空闲分区大小(KB)for(i=0 ; i<n ; i+)FreePartitioni = stdin.nextInt();/请输入作业个数m = stdin.nextInt();/请依次输入作业名称for(i=0 ; i<m ; i+)ProcessNamei = stdin.next().charAt(0);chi = ProcessNamei;/请依次输入作业大小(KB)for(i=0;i<m;i+)ProcessNeedi = stdin.n

11、extInt();statei=false;for(i=0;i<n;i+)System.out.print("|"+FreePartitioni);System.out.print("|n");System.out.println("作业信息如下:");for(i=0;i<m;i+)System.out.print(ProcessNamei+"t");System.out.print("n");for(i=0;i<m;i+)System.out.print(ProcessNee

12、di+"t");System.out.println("n");/1首次适应算法public static void First() for(i=0;i<m;i+)for(j=0;j<n;j+) /找到第一个合适的空闲分区if(ProcessNeedi <= FreePartitionj) && (!statei) for(k=0;k<3;k+) /记录作业分配if(orderjk = 0) /为空orderjk=ProcessNamei;break;elsecontinue;FreePartitionj=Free

13、Partitionj-ProcessNeedi;statei=true;/2循环首次适应算法public static void CycleFirst() i=0;j=0;while(i<n) && (j<m)if(ProcessNeedi <= FreePartitionj) && (!statei)for(k=0;k<3;k+) /记录作业分配if(orderjk=0)orderjk=ProcessNamei;break;elsecontinue;FreePartitionj=FreePartitionj-ProcessNeedi;s

14、tatei=true;i+;elsej+;/3最佳适应算法public static void Best() for(i=0;i<m;i+)temp=FreePartition0;k=0;/找到第一个合适的空闲分区while(ProcessNeedi > temp)k+;temp=FreePartitionk;for(j=0;j<n;j+) /按最佳适应算法找到符合的空闲区if(ProcessNeedi <= FreePartitionj) && (temp > FreePartitionj) && (!statei) temp=F

15、reePartitionj;k=j;elsecontinue;for(d=0;d<3;d+) /记录作业分配if(orderkd=0)orderkd=ProcessNamei;break;elsecontinue;FreePartitionk=FreePartitionk-ProcessNeedi;statei=true;/4最坏适应算法public static void CycleFirst() i=0;j=0;while(i<n) && (j<m)if(ProcessNeedi <= FreePartitionj) && (!sta

16、tei)for(k=0;k<3;k+) /记录作业分配if(orderjk=0)orderjk=ProcessNamei;break;elsecontinue;FreePartitionj=FreePartitionj-ProcessNeedi;statei=true;i+;elsej+;public static void CycleFirst() i=0;j=0;while(i<n) && (j<m)if(ProcessNeedi <= FreePartitionj) && (!statei)for(k=0;k<3;k+) /记

17、录作业分配if(orderjk=0)orderjk=ProcessNamei;break;elsecontinue;FreePartitionj=FreePartitionj-ProcessNeedi;statei=true;i+;elsej+; /5快速适应算法public static void Worst() for(i=0;i<m;i+)temp=FreePartition0;k=0;for(j=0;j<n;j+) /按最坏适应算法找到合适的空闲分区if(ProcessNeedi <= FreePartitionj) && (temp < FreePartitionj) && (!statei) temp=FreePartitionj;k=j;elsecontinue;for(d=0;d<3;d+) /记录作业分配if(orderkd=0)orderkd=ProcessNamei;break;el

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论