FCFS调度算法java
时间: 2023-11-13 22:55:11 浏览: 37
FCFS调度算法是一种先来先服务的进程调度算法,即按照进程到达的先后顺序进行调度。在该算法中,当一个进程到达后,如果CPU正在执行其他进程,则该进程需要等待前面的进程执行完毕后才能开始执行。下面是一个简单的Java实现示例:
```java
import java.util.*;
public class FCFS {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入进程数:");
int n = sc.nextInt();
int[] arrivalTime = new int[n]; // 进程到达时间
int[] burstTime = new int[n]; // 进程执行时间
int[] finishTime = new int[n]; // 进程完成时间
int[] turnAroundTime = new int[n]; // 周转时间
int[] waitingTime = new int[n]; // 等待时间
double avgTurnAroundTime = 0; // 平均周转时间
double avgWaitingTime = 0; // 平均等待时间
// 输入每个进程的到达时间和执行时间
for (int i = 0; i < n; i++) {
System.out.print("请输入第" + (i + 1) + "个进程的到达时间和执行时间:");
arrivalTime[i] = sc.nextInt();
burstTime[i] = sc.nextInt();
}
// 计算每个进程的完成时间、周转时间和等待时间
for (int i = 0; i < n; i++) {
if (i == 0) {
finishTime[i] = arrivalTime[i] + burstTime[i];
} else {
finishTime[i] = Math.max(finishTime[i - 1], arrivalTime[i]) + burstTime[i];
}
turnAroundTime[i] = finishTime[i] - arrivalTime[i];
waitingTime[i] = turnAroundTime[i] - burstTime[i];
avgTurnAroundTime += turnAroundTime[i];
avgWaitingTime += waitingTime[i];
}
// 输出每个进程的完成时间、周转时间和等待时间
System.out.println("进程\t到达时间\t执行时间\t完成时间\t周转时间\t等待时间");
for (int i = 0; i < n; i++) {
System.out.println((i + 1) + "\t" + arrivalTime[i] + "\t\t" + burstTime[i] + "\t\t" + finishTime[i] + "\t\t" + turnAroundTime[i] + "\t\t" + waitingTime[i]);
}
// 输出平均周转时间和平均等待时间
avgTurnAroundTime /= n;
avgWaitingTime /= n;
System.out.println("平均周转时间:" + avgTurnAroundTime);
System.out.println("平均等待时间:" + avgWaitingTime);
}
}
```