第一步:创建一个found类

import java.util.ArrayList;class Found {ArrayList<PCB> sequnce;//创建就绪队列PCB pcb[] = new PCB[5];int StartTime = 0;int SystemTime = (int) (Math.random() * 3) + 1;//随即产生系统时间Found() {sequnce = new ArrayList<PCB>();for (int i = 0; i < 5; i++) {pcb[i] = new PCB();pcb[i].Id = i + 1;sequnce.add(pcb[i]);}}void FCFS()//先来先服务算法{PCB Running = null;while (sequnce.size() > 0)//就绪队列不为空{Running = sequnce.remove(0);Running.UseTime = Running.NeedTime;Running.NeedTime = 0;Running.Perior = 0;System.out.println("当前系统时间:" + SystemTime);SystemTime += Running.UseTime;ShowMessages(Running);}}void RR()//时间片轮换算法{PCB Running = null;int Time = SystemTime;while (sequnce.size() > 0) {System.out.println("当前系统时间:" + SystemTime);Running = sequnce.remove(0);if (Running.NeedTime <= Time) {Running.UseTime = Running.NeedTime;Running.NeedTime = 0;Running.Perior = 0;Running.Status = "Finish";SystemTime += Running.UseTime;} else {Running.UseTime += Time;Running.NeedTime -= Time;Running.Perior--;Running.Status = "Ready";sequnce.add(Running);SystemTime += Time;}ShowMessages(Running);}}void ShowMessages(PCB p)//输出信息{System.out.println("当前运行进程:" + p.Id +"  " + "服务时间:" + p.UseTime +"  " + "需要时间:" + p.NeedTime +"  " + "优先级:" + p.Perior +"  " + "状态:" + p.Status);if (sequnce.size() > 0) {System.out.println("当前就绪进程:");for (PCB p1 : sequnce) {System.out.println("进程编号:" + p1.Id +"  " + "服务时间:" + p1.UseTime +"  " + "需要时间:" + p1.NeedTime +"  " + "优先级:" + p1.Perior +"  " + "状态:" + p1.Status);System.out.println("--------------------------------------------------------------------------");}} else {System.out.println("当前系统中已经没有就绪进程!");}System.out.println('\n');}
}

第二步:创建一个Menu类

import java.util.Scanner;class Menu//主界面菜单
{       Scanner sc=new Scanner(System.in);int print()  {   System.out.println("********************************************");System.out.println(" 进调度算法演示");System.out.println("********************************************");System.out.println("              1.先来先服务(FCFS)算法");System.out.println("              2.时间片轮换(RR)算法");System.out.println("              3.退出该程序");System.out.print("请选择所要采用的算法:");int flag=sc.nextInt();    return flag;   }void select()   {int flag=print();switch (flag){     case 1:    Found Process1=new Found();Process1.FCFS();     print();case 2:       Found Process2=new Found();      Process2.RR();     print();case 3: System.exit(0);default:     break;    }}
}

第三步:创建一个PCB类

import java.util.ArrayList;
import java.util.Scanner;
public class PCB {int Id;//进程编号int UseTime;//服务时间int NeedTime;//需要时间int Perior;//优先级String Status;//状态PCB() {Id++;UseTime = 0;NeedTime = (int) Math.round(Math.random() * 6) + 1;//随机产生需要时间Perior = (int) Math.round(Math.random() * 5) + 1;//随即产生优先级    Status="Ready";//初始状态为就绪   }  }}}

第四步:创建一个ProcessControl 类

public class ProcessControl  {public static  void main(String args[]){PCB pcb=new PCB();Menu Tencent=new Menu();Tencent.select();}
}

进程调度算法Java代码相关推荐

  1. 进程调度算法java,CPU调度算法 - 计算机札记大全 - JavaEye技术网站

    两种进程调度算法:1)优先数调度:2)循环轮转调度 ①本程序用两种算法对五个进程进行调度,每个进程可有三个状态,并假设初始状态为就绪状态. ②为了便于处理,程序中的某进程运行时间以时间片为单位计算.各 ...

  2. FCFS、SJF、RR、SRT进程调度算法的代码实现

    最近在做操作系统的上机实验,顺便给大家分享一下自己实验的过程和成果. 以下是实验步骤∶ 1.用一个结构体来存储进程的信息,结构体中包含以下变量. int id; int arriving_time;/ ...

  3. 五种进程调度算法C++代码实现(FCFS、SJF、Priority、SRTF,Round Robin)

    说明: 1.假设有只两种状态,就绪状态和结束状态.进程的初始状态都为就绪状态. 2.每次运行所设计的处理器调度程序调度进程之前,为每个进程随机生成它的要求运行时间. 3.模拟处理器调度,被选中的进程并 ...

  4. 磁盘调度算法java代码

    第一步,创建一个CSCAN类 public class CSCAN {public int m=0; //用来存放磁头的初始位置public boolean Run=true;public int s ...

  5. 操作系统大作业 基于Linux的模拟进程调度算法 运用c++语言编程 在VMware虚拟机里 centos 亲自写亲自测试 代码 说明书

    发布文章 博文管理我的博客退出 Trash Temp 操作系统大作业 基于Linux的模拟进程调度算法 运用c++语言编程 在VMware虚拟机里 centos 亲自写亲自测试 代码 说明书 @[TO ...

  6. 【进程调度算法】时间片轮转调度算法、多级反馈队列调度算法(Java实现)

    时间片轮转调度算法(RR)是十分简单的进程调度算法. 进程在执行时的情况 在该时间片内进程执行完毕,这种情况调度程序将立即把该进程弹出队列,并把CPU分配给新的队首进程 在该时间片内进程未执行完毕,调 ...

  7. 进程调度算法——C++实现 [ FCFS,SJF,HPR,HRN + 开源代码 + 详细解析 ]

    ✅ (原创,库存,第100篇博客,纪念一下) 文章目录 零.动态演示图 一.实现原理 二.实现内容: 三.算法流程图: 3.1 先来先服务算法(FCFS)的流程图: 3.2 最短作业优先算法(SJF) ...

  8. java如何计算吞吐量_如何计算进程调度算法的吞吐量(How to calculate throughput of a process scheduling algorithm)...

    如何计算进程调度算法的吞吐量(How to calculate throughput of a process scheduling algorithm) 我正在尝试使用Java计算FCFS算法的吞吐 ...

  9. 【操作系统】最高响应比优先的进程调度算法-C语言(有代码)

    本文章将会介绍最高响应比优先的进程调度算法,并按照以下需求进行实现: 代码在文章最后 由用户输入每个进程的名称.要求运行时间 每一轮调度,计算每个进程的响应比,R = (W+S)/S=1+W/S,W: ...

最新文章

  1. 提取操作系统的基本信息(内核、系统版本、网络地址等)
  2. 自己写的python软件可以在哪发布-如何发布一个Python命令行工具
  3. PYTHON之路(四)
  4. cad绘制椭圆的方法有几种_CAD新手入门教学:如何绘制矩形?
  5. Day11多态部分-2 【1.2 多态的前提】
  6. MySQL【案例讲解】分组查询
  7. AngularJS(三):重复HTML元素、数据绑定
  8. 追根溯源 - 数据中台概念的起源
  9. 32位dll转64位工具_如何在64位系统中运行32位或16位程序
  10. CentOS安装Hadoop
  11. struts2生成随机验证码图片
  12. 在OLT上查看SLAN
  13. 合肥宏晶微MS9334芯片特性/HDMI一分四开发板/HDMI分配器芯片/HDMI 1分4芯片
  14. 怎么用Python爬取抖音小视频? 资深程序员都这样爬取的(附源码)
  15. java HashMap集合的使用
  16. APP应用测试要点。。。。我知道的就这么多
  17. c语言 linux系统 delay,Linux下实现秒级定时任务的两种方案
  18. 【hardware】什么是H桥电路?
  19. 【MediaWiki之windows安装】MediaWiki创建与基础使用指南
  20. 搜狗微信下线了怎么获取公众号文章?手把手教你最新获取方式

热门文章

  1. mysql 建表_别再胡乱建表了,看看阿里P8总结的mysql建表规约吧
  2. 编程笔试(解析及代码实现):序列重排之给一个长度为n的序列A,求找出某种排列方式使得相邻两个数的差值之和最大并求出该最大值
  3. 成功解决No such file or directory: site-packages\\pyyaml-5.3-py3.6-win-amd64.egg\\EGG-INFO\\top_level.t
  4. Py之keras-resnet:keras-resnet的简介、安装、使用方法之详细攻略
  5. Dataset之CelebAman2woman:CelebAman2woman 数据集的简介、安装、使用方法之详细攻略
  6. 图像边缘检测,检测亦或简化
  7. vm无法删除干净老版本,新版本无法安装解决
  8. HTML 的特殊字符转换转义符,的两种方法。
  9. 数据库中字段类型对应的C#中的数据类型
  10. 后缀自动机序列自动机综合