参考文章:
https://blog.csdn.net/qq_41900081/article/details/85275060
https://blog.csdn.net/abc1498880402/article/details/80372441
一、实验目的
在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态。当就绪进程个数大于处理机数时,就必须依照某种策略来决定哪些进程优先占用处理机。本实验模拟在单处理机情况下的进程调度,帮助学生加深了解进程调度的工作。
二、实验内容
设计一个按优先级调度算法实现进程调度的程序。
(实验代码为“抢占式优先级调度算法”)
三、系统分析与设计
1、数据结构
2、算法设计
四、实现代码
进程控制块PCB类
public class PCB {
//进程名:P1、P2、P3。。。
private String name;
//要求运行时间:1-5取随机数
private int runTime;
//优先级:1-10取随机数
private int priorityNum;
//进程状态:就绪W(Wait)、准备(Ready)或完成E(End)
private String state ="R";
//到达时间:1-5取随机数
private int arrivalTime;
//无参构造
public PCB() {
}
//带五个参数的构造(进程名)
public PCB(String name) {
this.name = name;
this.setRunTime(runTime);
this.setPriorityNum(priorityNum);
this.setState(state);
this.setArrivalTime(arrivalTime);
}
//打印信息
public void printInformation() {
System.out.println(
this.getName() + "\t\t"+this.getArrivalTime()+ "\t\t" + this.getRunTime() + "\t\t" +
this.getPriorityNum() + "\t\t" + this.getState());
}
//PCB工作
public void run() {
this.priorityNum--;
this.runTime-=DPS.CPUTIME;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;}
public int getRunTime() {
if(runTime<0){
return 0;
} else{