用JAVA实现优先级调度算法

参考文章:

https://blog.csdn.net/qq_41900081/article/details/85275060

https://blog.csdn.net/abc1498880402/article/details/80372441

一、实验目的

在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态。当就绪进程个数大于处理机数时,就必须依照某种策略来决定哪些进程优先占用处理机。本实验模拟在单处理机情况下的进程调度,帮助学生加深了解进程调度的工作。

二、实验内容

设计一个按优先级调度算法实现进程调度的程序。
(实验代码为“抢占式优先级调度算法”)

三、系统分析与设计

1、数据结构

在这里插入图片描述

2、算法设计

在这里插入图片描述

四、实现代码

进程控制块PCB类

public class PCB {
   
    //进程名:P1、P2、P3。。。
    private String name;
    //要求运行时间:1-5取随机数
    private int runTime;
    //优先级:1-10取随机数
    private int priorityNum;
    //进程状态:就绪W(Wait)、准备(Ready)或完成E(End)
    private String state ="R";
    //到达时间:1-5取随机数
    private int arrivalTime;

    //无参构造
    public PCB() {
   
    }

    //带五个参数的构造(进程名)
    public PCB(String name) {
   
        this.name = name;
        this.setRunTime(runTime);
        this.setPriorityNum(priorityNum);
        this.setState(state);
        this.setArrivalTime(arrivalTime);
    }

    //打印信息
    public void printInformation() {
   
        System.out.println(
            this.getName() + "\t\t"+this.getArrivalTime()+ "\t\t" + this.getRunTime() + "\t\t" +
            this.getPriorityNum() + "\t\t" + this.getState());
    }

    //PCB工作
    public void run() {
   
        this.priorityNum--;
        this.runTime-=DPS.CPUTIME;
    }

    public String getName() {
   
        return name;
    }

    public void setName(String name) {
   this.name = name;}

    public int getRunTime() {
   
        if(runTime<0){
   
            return 0;
        } else{
   
      
  • 3
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值