Java操作系统进程调度算法——先来先服务(FCFS)算法
Java操作系统进程调度算法——先来先服务(FCFS)算法
文章目录
前言
无论是在批处理系统还是分时系统中,用户进程数一般都多于处理机数、这将导致它们互相争夺处理机。另外,系统进程也同样需要使用处理机。这就要求进程调度程序按一定的策略,动态地把处理机分配给处于就绪队列中的某一个进程,以使之执行。
一、算法思想
先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。采用FCFS算法,每次从后备队列中选择一个或多个最先进入该队列的作业,将他们调入内存,为他们分配资源,创建进程,然后放入就绪队列。在进程调度中采用FCFS算法时,则每次调度是从就绪队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行。该进程一直运行到完成或发生某事件而阻塞后才放弃处理机。
二、数据结构
1.定义(PCB)进程控制块
代码如下(示例):
String id;
float reachTime;
float needTime;
float startTime;
float finishTime;
char state;
2.实现思路
(1)用户输入进程数
(2)初始化进程(进程ID、进程到达时间、进程运行时间)
(3)判断进程是否都运行完毕
(4)模拟运行下一个进程(并计算相应的时间)
(5)更改当前时间
(6)所有进程运行结束后,计算平均周转时间和平均带权周转时间
(7)打印输出结果
三、流程图
四、完整代码
import java.util.Scanner;
import java.util.Arrays;
public class fcfs1 {
// 接口Comparable和类方法Arrays.sort()的配合使用可以使进程按reachTime(到达时间)排序
private static class PCB implements Comparable<PCB> {
String id;
float reachTime;
float needTime;
float startTime;
float finishTime;
char state;
public int c