操作系统中的FCFS(First Come First Served)先来先服务算法,java实现

按照作业进入系统的先后次序来挑选作业,先进入系统的作业优先被挑选。
FCFS算法的优缺点:算法容易实现。但效率不高,只顾及作业等候时间,没考虑作业要求服务时间的长短。因此优待了长作业而不利于短作业;有利于CPU繁忙型作业,而不利于I/O繁忙型作业。

package com.fx.FCFS_system;import java.util.List;/*** fcfs算法实现代码* * @author fx**/
public class FCFS_algorithm {public static void FCFS(double Start_time, List<thread_case> list) {double temp = 0;for (int i = 0; i < list.size(); i++) {thread_case tc = list.get(i);temp = tc.Sub_time;// 为了避免周转时间出错if (tc.Sub_time < Start_time) {tc.Sub_time = Start_time;// 如果提交时间小于开始时间则修改提交时间}tc.Start_time = tc.Sub_time;tc.Completion_time = tc.Start_time + tc.run_time;tc.Turnaround_time = tc.Completion_time - temp;tc.Turnaround_time_with_rights = String.format("%.1f",(tc.Turnaround_time / tc.run_time + 0.1 * (tc.Turnaround_time % tc.run_time)));tc.Turnaround_time_with_rights_average = (int) (tc.Turnaround_time / tc.run_time+ 0.1 * (tc.Turnaround_time % tc.run_time)) / list.size();tc.Sub_time = temp;Start_time = tc.Completion_time;// 下一个进程的开始时间要等于上一个进程的完成时间}}
}
package com.fx.FCFS_system;public class thread_case implements Comparable<thread_case> {int flag;// 设立优先级String no;// 序号double Start_time;double Sub_time;// 提交时间double run_time;// 运行时间double Completion_time;double Turnaround_time;// 周转时间String Turnaround_time_with_rights;// 带权周转时间double Turnaround_time_hour_average;// 平均周转时间 定义成String,为了后面格式化doubledouble Turnaround_time_with_rights_average;// 平均带权周转时间public thread_case(String no, int Sub_time, int run_time, int Start_time) {super();this.no = no;this.Sub_time = Sub_time;this.run_time = run_time;this.Start_time = Start_time;// this.Turnaround_time = Start_time - run_time;}@Overridepublic String toString() {return no + "\t" + Sub_time + "\t" + run_time + "\t" + Start_time + "\t" + Completion_time + "\t"+ Turnaround_time + "\t" + Turnaround_time_with_rights + "\t\t" + Turnaround_time_with_rights_average;}public int compareTo(thread_case o) {return (int) (this.Sub_time - o.Sub_time);// 大于1则升序 小于1降序}}
package com.fx.FCFS_system;import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
//import java.util.stream.Collectors;/*** FCFS先来先服务调度算法* * @author fx* @time 2021年4月26日22:21:00**/
public class FCFS_algorithm_Test {public static void main(String[] args) {// 通过Collection接口下的List类实现对对象的排序List<thread_case> list = new ArrayList<thread_case>();// 输入三个的线程 序号 提交时间 小时位 分钟位 执行时间Scanner sc = new Scanner(System.in);int Start_time = 0;list.add(new thread_case("J1", 2, 1, Start_time));list.add(new thread_case("J2", 4, 1, Start_time));list.add(new thread_case("J3", 1, 1, Start_time));System.out.println("执行前:");showinfo();list.forEach(System.out::println);// 先对三个线程根据提交时间排序Collections.sort(list);// 通过对CompareT方法的重写定义自己的方法System.out.println("排序后:");showinfo();list.forEach(System.out::println);// 执行FCFS优先调度算法FCFS_algorithm.FCFS(Start_time, list);System.out.println("进程执行完");showinfo();list.forEach(System.out::println);}public static void showinfo() {System.out.println("序号" + "\t" + "提交" + "\t" + "运行" + "\t" + "开始" + "\t" + "完成" + "\t" + "周转" + "\t" + "带权周转时间"+ "\t" + "平均带权周转时间");}}

测试结果:

操作系统中的FCFS(First Come First Served)先来先服务算法,java实现相关推荐

  1. 操作系统 先来先服务算法(FCFS)、最短寻到时间优先算法(SSTF)、扫描算法(电梯算法,SCAN)、循环扫描算法(CSCAN)

    操作系统 先来先服务算法(FCFS).最短寻到时间优先算法(SSTF).扫描算法(电梯算法,SCAN).循环扫描算法(CSCAN)和N步扫描算法(NStepScan)的程序实现 复制到本地即可运行 # ...

  2. 操作系统 系统开销比率_操作系统中的最高响应比率下一个(HRRN)调度

    操作系统 系统开销比率 操作系统中的HRRN调度是什么? (What is HRRN Scheduling in Operating System?) HRRN is the abbreviation ...

  3. 操作系统中常见的进程调度算法

    一.调度与调度算法 调度:操作系统管理了系统的有限资源,当有多个进程(或多个进程发出的请求)要使用这些资源时,因为资源的有限性,必须按照一定的原则选择进程(请求)来占用资源.这就是调度.目的是控制资源 ...

  4. linux六种进程状态,Linux操作系统中进程的七种状态

    Linux操作系统中进程的七种状态 发布时间:2018-05-07 20:43, 浏览次数:741 , 标签: Linux 1 Linux中进程的七种状态(1)R运行状态(runing):并不意味着进 ...

  5. 如何避免操作系统中多线程资源竞争的互斥与同步?

    作者 | 小林coding 来源 | 小林coding(ID:CodingLin) 前言 先来看看虚构的小故事 已经晚上 11 点了,程序员小明的双手还在键盘上飞舞着,眼神依然注视着的电脑屏幕. 没办 ...

  6. 解决windows 10英文版操作系统中VS2017控制台程序打印中文乱码问题

    当您在windows 10英文版的操作系统中运行Vs2017控制台应用程序时,程序可能无法正常显示中文,中文都变成了乱码.这是由于大部分中文程序所使用的文字编码与Windows 英文系统的文字编码不同 ...

  7. 在 Linux“.NET研究” 操作系统中运行 ASP.NET 4 (下)

    "在 Linux 操作系统中运行 ASP.NET 4 (中)"中已经配置好了 openSUSE 11.3 操作系统. 现在,我们进入"GNOME 终端",使用 ...

  8. 操作系统中的进程与线程

    简介 在传统的操作系统中,进程拥有独立的内存地址空间和一个用于控制的线程.但是,现在的情况更多的情况下要求在同一地址空间下拥有多个线程并发执行.因此线程被引入操作系统. 为什么需要线程? 如果非要说是 ...

  9. 中断技术在计算机系统中的应用,中斷在操作系统中的应用.doc

    中斷在操作系统中的应用 中断在操作系统中的应用 (**大学 电子信息学院, 四川 成都 610065) 摘要: 计算机执行期间,系统内如果发生任何非寻常的或非预期的急需处理事件,使得CPU暂时中断当前 ...

  10. 洋哥大讲堂之解决Windows10操作系统中,“启用或关闭windows功能”里没有IE选项的问题...

    最近有一些学员反馈,在安装的Windows10操作系统中,找不到IE11浏览器,并且在"启用或关闭windows功能"里也没有IE选项,如下图所示: 找遍了所有的资料也没有解决问题 ...

最新文章

  1. 浅谈Redis与MySQL的耦合性以及利用管道完成MySQL到Redis的高效迁移
  2. java和C中基本数据类型的所占字节数对比
  3. python3.72教程_python3教程_编程入门教程_牛客网
  4. 最受Linux程序员欢迎的7个代码编辑器的介绍及下载地址
  5. php中add函数,php中addslashes()和addclashes()函数的区别分析
  6. springboot util 测试类怎么写_SpringBoot入门建站全系列(九)文件上传功能与下载方式...
  7. linux系统中如何查看日志 (常用命令2)
  8. 快速正确的修改变量的命名和如何正确规范的注释
  9. 企业以太坊联盟发布了愿景文件
  10. (转)微服务架构 互联网保险O2O平台微服务架构设计
  11. Atitit it 互联网 软件牛人的博客列表
  12. 转并学习: 将rar文件转换为zip格式
  13. 【DKN】(三)data_preprogress.py
  14. 201771010137 赵栋《面向对象程序设计(java)》第十五周学习总结
  15. 银行存款业务 银行软件测试工程师必会
  16. 大搜车面向复杂业务场景的研发运维体系治理实践
  17. html+css 实现红绿灯效果
  18. 【笔记】白岩松:如何去看待青年人看抖音。
  19. 腾讯三面(hr面)之轻松过关
  20. 新书上市 | 世界名校数据挖掘经典《斯坦福数据挖掘教程(第3版)》

热门文章

  1. SASS的安装及简单操作
  2. Win10激活-记录篇
  3. 詹克团:《区块链:人类劳动组织的未来形式》
  4. [Android/Icon] 分享一个图标/Icon制作网站
  5. 推荐四款在线富文本编辑器
  6. 清理谷歌浏览器注册表_将谷歌浏览器的注册表彻底删除的方法
  7. java 批量修改图片名称_java 批量修改文件名称
  8. 解决 epsg.io 网站访问不了
  9. Android平板的磁盘分区,平板电脑硬盘分区 Original Pad到PC:教您将Win10安装到Android平台...
  10. 激光导航agv常见的三大应用场景是什么?