操作系统先来先服务FCFS代码java
时间: 2024-11-24 16:27:18 浏览: 17
在Java中实现FCFS(First-Come, First-Served,即先进先出)调度,就是按照进程到达内存的先后顺序来决定给它们分配CPU时间片。下面是一个简单的例子,我们将创建一个`Process`类表示进程,以及一个`Scheduler`类来进行调度:
```java
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
// 表示进程
class Process {
int id;
long arrivalTime;
// 构造函数
public Process(int id, long arrivalTime) {
this.id = id;
this.arrivalTime = arrivalTime;
}
}
// FCFS调度器
class FCFS_Scheduler {
List<Process> processList; // 使用列表保存进程
// 构造函数
public FCFS_Scheduler() {
processList = new ArrayList<>();
}
// 添加进程
public void addProcess(Process p) {
processList.add(p);
}
// 主循环调度
public void executeProcesses() {
Collections.sort(processList, (p1, p2) -> Long.compare(p1.arrivalTime, p2.arrivalTime)); // 按到达时间排序
for (Process process : processList) {
System.out.println("Running process " + process.id + " with arrival time " + process.arrivalTime);
// 这里只是一个模拟,实际操作中应有进程运行的逻辑
// process.run();
}
}
}
public class Main {
public static void main(String[] args) {
FCFS_Scheduler scheduler = new FCFS_Scheduler();
// 创建并添加进程
Process p1 = new Process(1, 0);
Process p2 = new Process(2, 5);
Process p3 = new Process(3, 10);
scheduler.addProcess(p1);
scheduler.addProcess(p2);
scheduler.addProcess(p3);
// 执行调度
scheduler.executeProcesses();
}
}
```
在这个例子中,我们首先创建了一个进程列表,然后通过`Collections.sort()`对进程按照到达时间排序。然后逐个调度每个进程。
阅读全文