操作系统——SJF算法(Java实现)

Java操作系统进程调度算法------短作业优先调度算法(SJF)算法

一、算法思想

SJF(Shortest Job First)算法是一种作业调度算法,也称为最短作业优先算法,其思想是优先调度执行时间最短的作业。在SJF算法中,作业队列中所有作业的执行时间都已知,调度时选择执行时间最短的作业先执行,以保证平均等待时间最小。

二、算法分析

假设现在有五个进程先后到达系统进行调度

进程号 进程名 到达时间 服务时间(执行时间)
1001 p1 9:40 20
1004 p4 10:10 10
1005 p5 10:05 30
1002 p2 9:55 15
1003 p3 9:45 25

在SJF算法中,由于在9:40时刻系统中只有作业p1,因比系统将优先为作业p1进行调度。作业p1在完成的过程中作业p2、p3、p4、p5先后都到达了系统中。也就是说在作业p1调度完成后系统中会有p2、p3、p4、p5四个作业等待调度。根据短进程调度优先的思想,
系统将依次按p2、p4、p3、p5的顺序为接下来的四个作业进行调度。

下述具体的计算可以参考本人FCFS算法的具体内容,此处不过多叙述(操作系统——FCFS算法(Java实现)-优快云博客

周转时间 = 完成时间 - 到达时间

带权周转时间=周转时间/运行时间
等待时间=周转时间-运行时间(分钟)

平均周转时间
平均等待时间

三、数据结构

作业数据类

class ProcessData {
   
    //进程号
    public int id;
    //进程名字
    public String name;
    //到达时间
    public LocalTime arriveTime;
    //执行时间
    public double serviceTime;
    //开始时间
    public LocalTime startTime;
    //完成时间
    public LocalTime finishTime;
    //周转时间
    public double wholeTime;
    //带权周转时间
    public double weightWholeTime;

    public ProcessData(int id, String name, String arriveTime, double serviceTime) {
   
        this.id = id;
        this.name = name;
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("H:m");
        this.arriveTime = LocalTime.parse(arriveTime,formatter);
        this.serviceTime = serviceTime;

    }

    @Override
    public String toString() {
   
        DecimalFormat decimalFormat1 = new DecimalFormat("#");
        DecimalFormat format = new DecimalFormat("#.00");
        return id + "\t" +
                name + "\t" + "     " +
                arriveTime + "\t" + "   " +
                decimalFormat1.format(serviceTime) + "\t" + "          " +
                startTime + "\t" + "        " +
                finishTime + "\t" + "       " +
                decimalFormat1.format(wholeTime) + "\t" + "        " +
                format.format(weightWholeTime);
    }
}

作业调度(算法实现部分)

package cn.homyit;

import java.text.DecimalFormat;
import java.time.LocalTime;
import java.time.temporal
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值