• 大小: 376KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-01
  • 语言: Java
  • 标签:

资源简介

在这个例子中,我实现了进程调度的三种算法,分别是优先级算法,时间片算法,和段作业优先算法。进程从文件中读取

资源截图

代码片段和文件信息

package com.box.process;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONobject;
import com.box.process.tools.PCB;


public class MainRun {

static int allTime=0;

public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);

String processMessage=loadProcess();
List pcbs=new ArrayList<>();
JSONArray jsonArray=JSONArray.parseArray(processMessage);
pcbs=JSONArray2objectList(jsonArray);


System.out.println(“请选择调度方法“);
System.out
.println(“1.优先数算法                    2.时间片轮转算法                   3.短作业优先算法                 4.退出“);
int choose = Integer.parseInt(scanner.next());
allTime = getAllTime(pcbs);
switch (choose) {
case 1:
priority(pcbs);
break;
case 2:
changeByTime(pcbs);
break;
case 3:
shortTaskFrist(pcbs);
break;
default:
return;
}

}




private static int getAllTime(List pcbs) {
int allTime=0;

for(PCB pcb:pcbs){
allTime+=pcb.getRunTime();
}
return allTime;
}




private static void changeByTime(List pcbs) {
List queueList=new ArrayList<>(); 
List oldPcbs=new ArrayList<>();
oldPcbs=pcbs;
Scanner scanner=new Scanner(System.in);
System.out.println(“请输入时间片大小:“);

int time=scanner.nextInt();

System.out.println(“调度队列中每秒运行的进程如下:“);
for(int i=0;i PCB current=null;
int k=0;

for(int j=0;j PCB pcb=pcbs.get(j);

if(pcb.getIsOver()==false){
if(pcb.getStartTime()<=i){
if(current==null){
current=pcb;
k=j;
break;
}
}
}
}
pcbs.get(k).decrease();
queueList.add(current.getName());
System.out.print(current.getName());
i++;
int j=1;

for(j=1;j if(pcbs.get(k).getIsOver()==false){
pcbs.get(k).decrease();
queueList.add(current.getName());
System.out.print(current.getName());
i++;
}
}

if(j==time&&pcbs.get(k).getIsOver()==false){

List newPcbs=new ArrayList<>();

for(int n=0;n if(n!=k&&pcbs.get(n).getIsOver()==false){
newPcbs.add(pcbs.get(n));
}
}

newPcbs.add(pcbs.get(k));

pcbs=newPcbs;
}

}

int j=0;
System.out.println(“\n 优先算法甘特图如下:“);
System.out.print(“0 “+queueList.get(j)+“ “);
for(int i=0;i if(!queueList.get(i).equals(queueList.get(j))){
System.out.print(i+“ “+queueList.get(i)+“ “);
j=i;
}
}

System.out.print(“ “+(queueList.size()));


pcbs=oldPcbs;
System.out.println(“\n进程名:\t“+“等待时间:\t“+“周转时间:\t“);
for(int i=0;i System

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        294  2014-12-14 21:45  ProcessChoose\.classpath

     文件        389  2014-12-01 08:45  ProcessChoose\.project

     文件        823  2014-12-15 14:14  ProcessChoose\bin\com\box\process\JOB1.txt

     文件       8781  2014-12-15 14:15  ProcessChoose\bin\com\box\process\MainRun.class

     文件       2075  2014-12-15 14:03  ProcessChoose\bin\com\box\process\tools\PCB.class

     文件     409203  2014-12-14 21:45  ProcessChoose\libs\fastjson-1.2.3.jar

     文件        823  2014-12-15 14:14  ProcessChoose\src\com\box\process\JOB1.txt

     文件       8118  2014-12-15 14:15  ProcessChoose\src\com\box\process\MainRun.java

     文件       1396  2014-12-15 08:25  ProcessChoose\src\com\box\process\tools\PCB.java

     目录          0  2014-12-15 14:03  ProcessChoose\bin\com\box\process\tools

     目录          0  2014-12-15 14:03  ProcessChoose\src\com\box\process\tools

     目录          0  2014-12-15 14:14  ProcessChoose\bin\com\box\process

     目录          0  2014-12-15 14:03  ProcessChoose\src\com\box\process

     目录          0  2014-12-15 14:03  ProcessChoose\bin\com\box

     目录          0  2014-12-15 14:03  ProcessChoose\src\com\box

     目录          0  2014-12-15 14:03  ProcessChoose\bin\com

     目录          0  2014-12-15 14:03  ProcessChoose\src\com

     目录          0  2014-12-15 14:03  ProcessChoose\bin

     目录          0  2014-12-15 14:03  ProcessChoose\libs

     目录          0  2014-12-15 14:03  ProcessChoose\src

     目录          0  2014-12-15 14:03  ProcessChoose

----------- ---------  ---------- -----  ----

               431902                    21


评论

共有 条评论

相关资源