先来先服务调度:
算法描述:按照进程进入的先后次序来分配处理器。先进入就绪队列的进程优先被挑选,运行进程一旦占有处理器将一直运行下去,直到运行结束或被阻塞,这是非抢占式调度。
思维导图
文章图片
例题: 对如下进程 使用FCFS算法 进行排序和结果回显
文章图片
正确结果
施行FCFS调度算法:
平均进程周转时间T = (20+30+30+35)/4 = 28.75
平均带权进程周转时间W = (20/20+30/15+30/5+35/10)/4 = 3.13
Java实现:
package com.dhl.beyond.os_fscs;
import java.util.Scanner;
public class FCFS {
String name;
double arrivetime;
//进程到达时间
double servicetime;
// 进程执行时间长度(服务时间)
double starttime;
//进程开始执行时间
double finishtime;
//进程执行完成时间
double zztime;
//周转时间
double dqzztime;
//带权周转时间
public FCFS(){ }
public FCFS(String name, double arrivetime, double servicetime) {
this.name = name;
this.arrivetime = arrivetime;
this.servicetime = servicetime;
}//主方法
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("===============先来先服务调度算法========================");
System.out.println("输入进程数目: ");
int num = scanner.nextInt();
//创建进程数组对象
FCFS[] p = new FCFS[num];
System.out.println("请创建进程对象, 输入进程名称 到达时间 服务时间 <例如: p1 0 20>");
for (int i= 0;
ip[j].arrivetime){
FCFS temp;
temp = p[i];
p[i] = p[j];
p[j]= temp;
}
}
}
}//进程执行
private static void run(FCFS[] p) {
for(int k=0;
k"+p[k].name);
}
System.out.println("");
System.out.println("具体的调度信息: ");
System.out.println("进程名到达时间服务时间开始时间结束时间周转时间带权周转时间");
for(int k =0;
k
结果测试 【Java算法|Java 实现OS调度算法之先来先服务算法(FCFS)】
推荐阅读
- Java算法|Java 实现OS调度算法之短进程优先算法(SJF)
- 选择排序,简单排序,冒泡排序,快速排序的java代码实现
- Java中反射的概念、意义、用法(适合新手阅读)
- 算法|Java算法系列3--基于链表自定义队列
- java无限级树生成算法,空间复杂度为O(2n)