java编程实现FCFS调度算法
时间: 2024-03-26 12:41:08 浏览: 63
以下是Java实现FCFS调度算法的示例代码:
```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[] pid = new int[n]; // 进程ID
int[] arriveTime = new int[n]; // 到达时间
int[] burstTime = new int[n]; // 执行时间
int[] finishTime = new int[n]; // 完成时间
int[] turnaroundTime = new int[n]; // 周转时间
double[] wTurnaroundTime = new double[n]; // 带权周转时间
// 输入进程信息
for (int i = 0; i < n; i++) {
System.out.println("请输入第" + (i + 1) + "个进程的信息:");
System.out.print("进程ID:");
pid[i] = sc.nextInt();
System.out.print("到达时间:");
arriveTime[i] = sc.nextInt();
System.out.print("执行时间:");
burstTime[i] = sc.nextInt();
}
// 计算完成时间、周转时间、带权周转时间
int curTime = 0; // 当前时间
for (int i = 0; i < n; i++) {
// 计算完成时间
if (curTime < arriveTime[i]) {
curTime = arriveTime[i];
}
finishTime[i] = curTime + burstTime[i];
curTime = finishTime[i];
// 计算周转时间和带权周转时间
turnaroundTime[i] = finishTime[i] - arriveTime[i];
wTurnaroundTime[i] = (double) turnaroundTime[i] / burstTime[i];
}
// 输出结果
System.out.println("进程ID\t到达时间\t执行时间\t完成时间\t周转时间\t带权周转时间");
for (int i = 0; i < n; i++) {
System.out.println(pid[i] + "\t" + arriveTime[i] + "\t\t" + burstTime[i] + "\t\t" + finishTime[i] + "\t\t" + turnaroundTime[i] + "\t\t" + wTurnaroundTime[i]);
}
sc.close();
}
}
```
在这个示例中,我们使用Scanner类获取用户输入的进程信息,计算完成时间、周转时间和带权周转时间,并输出结果。注意,FCFS调度算法是一种非抢占式调度算法,因此我们不需要考虑进程优先级的问题。
阅读全文