package com.algorithm.multiStageFeedback;
import java.util.*;
/** * @Class MSFQS * @Description 多级反馈队列调度算法 * @Author Naren * @Date 2020/5/30 10:46 * @Version 1.0 */
public class MSFQS {
/*三个队列*/
private static Queue firstQueue = new LinkedList<>();
private static Queue secondQueue = new LinkedList<>();
private static Queue thirdQueue = new LinkedList<>();
private static int firstTime; //第一队列cpu时间片
private static int secondTime; //第二队列cpu时间片
private static int thirdTime; //第三队列cpu时间片
private static int proNum; //进程数量
private static Scanner sc = new Scanner(System.in);
/** * 内部进程类:模拟进程 */
private static class Progress implements Comparable {
String id; //进程标识符
int reachTime; //到达时间
int cpuTime; //运行时间
int needTime; //仍需时间
char state; //进程状态
/*重排输出格式*/
@Override
public String toString() {
System.out.println();
return String.format("进程%s: %10d %7d %8d %7c\n", id, reachTime, cpuTime, needTime, state);
}
/*重写比较器*/
@Override
public int compareTo( Progress b ) {
//按reachTime从小到大排序
return Float.compare(reachTime, b.reachTime);
}
}
/** * 进程调度算法:Multi-stage feedback queue scheduling algorithm */
private static void progressScheduling(Progress[] pro){
int firstCpu = firstTime;
int secondCpu = secondTime