用java编写一份先来先服务(FCFS)调度算法
时间: 2023-11-27 08:02:58 浏览: 67
先来先服务调度算法 FCFS
5星 · 资源好评率100%
以下是使用 Java 编写的先来先服务(FCFS)调度算法示例代码:
```java
import java.util.Scanner;
public class FCFS {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入进程数量: ");
int n = scanner.nextInt();
int[] arrivalTime = new int[n]; // 进程到达时间
int[] burstTime = new int[n]; // 进程执行时间
int[] completionTime = new int[n]; // 进程完成时间
int[] turnAroundTime = new int[n]; // 周转时间
int[] waitingTime = new int[n]; // 等待时间
int totalWaitingTime = 0; // 总等待时间
int totalTurnAroundTime = 0; // 总周转时间
// 输入每个进程的到达时间和执行时间
for (int i = 0; i < n; i++) {
System.out.print("请输入进程" + (i + 1) + "的到达时间: ");
arrivalTime[i] = scanner.nextInt();
System.out.print("请输入进程" + (i + 1) + "的执行时间: ");
burstTime[i] = scanner.nextInt();
}
// 计算每个进程的完成时间、周转时间和等待时间
for (int i = 0; i < n; i++) {
if (i == 0) {
completionTime[i] = arrivalTime[i] + burstTime[i];
} else {
completionTime[i] = Math.max(completionTime[i - 1], arrivalTime[i]) + burstTime[i];
}
turnAroundTime[i] = completionTime[i] - arrivalTime[i];
waitingTime[i] = turnAroundTime[i] - burstTime[i];
totalWaitingTime += waitingTime[i];
totalTurnAroundTime += turnAroundTime[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" + completionTime[i] + "\t\t" + turnAroundTime[i] + "\t\t" + waitingTime[i]);
}
// 输出平均等待时间和平均周转时间
System.out.println("平均等待时间: " + (double) totalWaitingTime / n);
System.out.println("平均周转时间: " + (double) totalTurnAroundTime / n);
scanner.close();
}
}
```
该程序的输入为进程数量、每个进程的到达时间和执行时间,输出为每个进程的完成时间、周转时间和等待时间,以及平均等待时间和平均周转时间。
阅读全文