【具体代码】

RR_Math.java

package RR;import java.text.DecimalFormat;
import java.util.LinkedList;
import java.util.Scanner;public class RR_Math {private LinkedList<Progress> l; //调度队列private Progress p_a;       //经过抽象和封装的进程对象aprivate Progress p_b;       //经过抽象和封装的进程对象bprivate Progress p_c;       //经过抽象和封装的进程对象cprivate Progress p_d;       //经过抽象和封装的进程对象dprivate Progress p_e;       //经过抽象和封装的进程对象eprivate Scanner s;private DecimalFormat df;private int q;public void init(){l = new LinkedList<>(); //分配队列内存//s = new Scanner(System.in);       p_a = new Progress("A",0,4,4);p_b = new Progress("B",1,3,3);p_c = new Progress("C",2,4,4);p_d = new Progress("D",3,2,2);p_e = new Progress("E",4,4,4);l.offer(p_a);l.offer(p_b);l.offer(p_c);l.offer(p_d);l.offer(p_e);}public void RR_Math(){System.out.print("请输入时间片q:");s = new Scanner(System.in);q = s.nextInt();df = new DecimalFormat("0.00");Progress temp;int count = 0; while ((temp=l.poll()) != null){if (temp.getService_time()-q > 0){String Name = temp.getName();int getTime = temp.getGet_time();int serviceTime = temp.getService_time()-q;int const_service = temp.getConst_service();temp = new Progress(Name,getTime,serviceTime,const_service);l.offer(temp);count+=q;}else{if(temp.getService_time() < q)count+=temp.getService_time();elsecount+=q;temp.setFinish_time(count);temp.setRevolve_time(temp.getFinish_time()-temp.getGet_time());temp.setPriority_revolve(temp.getRevolve_time()/(double)(temp.getConst_service()));System.out.print("线程名字:"+temp.getName()+"\t");System.out.print("到达时间:"+temp.getGet_time()+"\t");System.out.print("服务时间:"+temp.getConst_service()+"\t");System.out.println("完成时间:"+temp.getFinish_time()+"\t");System.out.println("周转时间:"+temp.getRevolve_time()+"\t");System.out.println("带权周转时间:"+df.format(temp.getPriority_revolve())+"\t");}}}
}

Progress.java

package RR;public class Progress {private String name;//线程名字private int get_time;//到达时间private int service_time;//服务时间private int finish_time;//完成时间private int revolve_time;//周转时间private double priority_revolve;//带权周转时间private int const_service;//固定不变的服务时间public Progress(String name, int get_time, int service_time, int finish_time, int revolve_time) {super();this.name = name;this.get_time = get_time;this.service_time = service_time;this.finish_time = finish_time;this.revolve_time = revolve_time;}public Progress(String name, int get_time, int service_time, int const_service) {super();this.name = name;this.get_time = get_time;this.service_time = service_time;this.const_service = const_service;}public Progress(String name, int get_time, int service_time) {super();this.name = name;this.get_time = get_time;this.service_time = service_time;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getGet_time() {return get_time;}public void setGet_time(int get_time) {this.get_time = get_time;}public int getService_time() {return service_time;}public void setService_time(int service_time) {this.service_time = service_time;}public int getFinish_time() {return finish_time;}public void setFinish_time(int finish_time) {this.finish_time = finish_time;}public int getRevolve_time() {return revolve_time;}public void setRevolve_time(int revolve_time) {this.revolve_time = revolve_time;}public double getPriority_revolve() {return priority_revolve;}public void setPriority_revolve(double priority_revolve) {this.priority_revolve = priority_revolve;}public int getConst_service() {return const_service;}public void setConst_service(int const_service) {this.const_service = const_service;}}

Main.java

package RR;public class Main {public static void main(String[] args) {RR_Math main = new RR_Math();main.init();main.RR_Math();}}

操作系统 进程调度之轮换调度(RR调度)相关推荐

  1. 计算机操作系统实验之进程调度(一)轮转调度法(C语言)

    计算机操作系统实验之进程调度(一)轮转调度法(C语言) 实验目的 实验内容与基本要求 轮转调度法的基本原理 实现思路及功能分析 算法流程图 全部代码 工程图 ProcessScheduling.h P ...

  2. CPU 时间片轮转机制 (RR 调度)

    时间片轮转机制(RR 调度) 时间片轮转法(Round-Robin,RR)主要用于分时系统中的进程调度.为了实现轮转调度,系统把所有就绪进程按先入先出的原则排成一个队列.新来的进程加到就绪队列末尾.每 ...

  3. 操作系统第六章笔记---CPU调度

    本文内容整理自西安交通大学软件学院田丽华老师的课件,仅供学习使用,请勿转载 操作系统系列笔记汇总:操作系统笔记及思维导图汇总附复习建议_Qlz的博客-CSDN博客 文章目录 文章目录 文章目录 思维导 ...

  4. 操作系统实验报告16:CPU 调度

    操作系统实验报告16 实验内容 实验内容:CPU 调度. 讨论课件 Lecture19-20 中 CPU 调度算法的例子,尝试基于 POSIX API 设计一个简单调度器(不考虑资源竞争问题): 创建 ...

  5. 操作系统 cpu调度_CPU调度| 操作系统

    操作系统 cpu调度 调度标准 (Scheduling Criteria) There are many criteria which have been suggested for comparin ...

  6. 【操作系统篇】第五篇——调度(概念,层次,调度时机,切换与过程,方式,评价指标)

    ​基本概念 ​三个层次 ​高级调度(作业调度) ​中级调度(内存调度) ​低级调度(进程调度) ​三层调度的联系,对比 ​补充知识 ​进程的"挂起态"与七状态模型 ​时机 ​什么时 ...

  7. 操作系统-进程调度(HRRN和RR)

    文章目录 进程调度(HRRN和RR) 问题描述 实验环境 输入 输出 测试数据 实验设计 数据结构 函数的功能.参数和输出 主要函数算法设计 详细设计 流程图 实验结果与分析 结果展示与描述 结果分析 ...

  8. 操作系统中的进程是如何 “调度” 的?

    一.处理机调度的概念和层次 1.1 调度的基本概念 当有一堆任务要处理,但由于资源有限,这些事情没法同时处理.这就需要确定某种规则来决定处理这些任务的顺序,这就是"调度"研究的问题 ...

  9. 操作系统—进程调度—HRRN,RR 高响应比和时间片轮转算法

    1.问题描述及需求分析 设计程序模拟进程的高响应比HRRN和时间片轮转RR调度过程.假设有n个进程分别在T1, - ,Tn时刻到达系统,它们需要的服务时间分别为S1, - ,Sn.如果选择RR算法,还 ...

最新文章

  1. 论坛报名 | 从捉迷藏、星际争霸到新一代人工智能:多智能体深度强化学习的理论与实践...
  2. iOS进程间通信之CFMessagePort
  3. android ScrollView实现上拉、下拉更新
  4. Ubuntu下用webstorm开发Nodejs(二)
  5. python基础——递归函数
  6. 使用Maven创建Web项目后,jsp引入静态文件提示报错。JSP 报错:javax.servlet.ServletException cannot be resolved to a type...
  7. 取代ZooKeeper!高并发下的分布式一致性开源组件StateSynchronizer
  8. 旅游系统_旅游标识系统,必须真的“旅游化”
  9. python - EDA - 1 统计缺失值
  10. 哈佛博士主导的一桩勒索病毒离奇历史
  11. weblogic 正在启动 wsee服务_详解LINUX安装部署weblogic集群--第二部分
  12. android 自定义 滑动删除,Android_Android ListView实现仿iPhone实现左滑删除按钮的简单实例,需要自定义ListView。这里就交Fl - phpStudy...
  13. 百练6183-人民币支付-2014正式A题
  14. C# label控件竖直显示 label控件垂直显示
  15. opengl 光线追踪_Vulkan的视频编解码支持将于2020年上半年加入,光线追踪也在路上...
  16. 如何批量查询ip地址归属地等信息?
  17. arduino声音传感器与二极管_Arduino声音传感器
  18. html5获取手机屏幕大小写,html图片自适应手机屏幕大小的css写法
  19. HOUDINI OPENCL 错误
  20. azul zing_Azul垃圾收集器

热门文章

  1. 错觉图:考考你的眼力
  2. WPF TextBlock自定义内容_se7en3_新浪博客
  3. 5g理论速度_5g速度是4g多少倍
  4. 舆情监控和应急处理方案,如何做好网络舆情监控?
  5. 微信小程序,输入时键盘弹起,聊天输入框自动弹起,内容不顶起
  6. [PLC]ST语言一:LD_LDI_AND_ANI_OR_ORI
  7. 177本名著浓缩成了177句话!别等自己做错时才明
  8. Lua环境搭建 Win10
  9. 三星s5html查看器,三星S5玩机技巧之系统精简篇
  10. 深拷贝和完全拷贝对比的探究