import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
import com.sun.jndi.url.iiopname.iiopnameURLContextFactory;
class PCB {
String name;//进程名
int arriveTime;//到达时间
int serveTime;//服务时间
int beginTime;//开始时间
int finshTime;//结束时间
int roundTime;//周转时间
int priority;//优先权
String processState = "W";//进程状态
double aveRoundTime;//带权周转时间
int cpuTime =0;//在时间轮转调度算法中,记录该进程真实服务时间已经用时的时长
int waitTime;//记录每个进程到达后的等待时间,只用于最高响应比优先调度算法中
boolean firstTimeTag=false;//在RR算法中标识开始时间是否第一次计算
public PCB() {
}
public PCB(String name,int priority, int arriveTime, int serveTime,int cpuTime) {
this.name = name;
this.priority = priority;
this.arriveTime = arriveTime;
this.serveTime = serveTime;
this.cpuTime = cpuTime;
}
public String toString() {
String info=new String("进程名: "+name+" 进程状态:"+processState+" 优先数:"+ priority
+" 到达时间:"+arriveTime+" 服务时间:"+serveTime+" 已用CPU时间:"+cpuTime );
return info;
}
}
public class processMenu {
public static void main(String[] args) {
process p = new process();
p.init();
while(true) {
System.out.println("请选择要验证的进程调度算法:1.先来先服务(A) 2.短作业优先(B) 3.最高优先数调度(C) 4.多级反馈队列(D) 5.结束程序(E)");
Scanner scanner = new Scanner(System.in);
String string = scanner.next();
switch(string) {
case "A":
p.FCFS();
break;
case "B":
p.SJF() ;
break;
case "C":
p.HPF();
break;
case "D":
p.MFQ();
break;
case "E":
System.out.println("程序结束!");
System.exit(-1);
}
}
}
}
class process {
Queue<PCB> P1 = new LinkedList<PCB>();
Queue<PCB> P2 = new LinkedList<PCB>();
Queue<PCB> P3 = new LinkedList<PCB>();
ArrayList<PCB> pcb;// 存放所有进程
LinkedList<PCB> link;// 存放进入就绪队列的进程
ArrayList<PCB> new_jcb;// 存放按指定调度算法结束的进程
PCB nowProess, nextProess;// 当前应执行进程
LinkedList<PCB> t1,t5,t10;
LinkedList [] a = new LinkedList[3];
int sum = 0;
public void init() {
//初始化
pcb = new ArrayList<PCB>();
link = new LinkedList<PCB>();
new_jcb = new ArrayList<PCB>()
实验二、进程调度模拟实验
最新推荐文章于 2024-02-13 14:42:01 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)