操作系统程序调度算法——先来先服务(FCFS),时间片(RR),短作业(SJF),高响应比(HRRN)java实现

本文介绍了操作系统实验中的四种程序调度算法:先来先服务(FCFS),时间片轮转(RR),短作业(SJF)和高响应比(HRRN)。通过Java实现这些算法,包括设置进程结束时间、使用优先队列处理高响应比等。文中还提及了其他博主的参考资料。
摘要由CSDN通过智能技术生成

操作系统实验——程序调度

操作系统实验要求写程序调度,百度查了一下,借鉴了一位老哥的先来先服务,自己写了后面的

先来先服务

只要写一个循环,把process集合中的每个process取出,把process结束时间置为当前时间加上服务时间,
然后当前时间加上服务时间即可。

    private void calc() {
   
        int timeNow = 0;
        Process opProcess;

        for (int i = 0; i < processNumber; i++) {
   
            opProcess = processList.get(i);

            int waitTime = timeNow - opProcess.getArrivalTime();
            int completionTime = timeNow + opProcess.getServicesTime();
            int turnAroundTime = completionTime
                    - opProcess.getArrivalTime();
            double turnAroundTimeWithWeight = (double) turnAroundTime
                    / opProcess.getServicesTime();

            opProcess.setStartTime(timeNow);
            opProcess.setWaitTime(waitTime);
            opProcess.setCompletionTime(completionTime);
            opProcess.setTurnAroundTime(turnAroundTime);
            opProcess.setTurnAroundTimeWithWeight(
                    turnAroundTimeWithWeight);

            timeNow += opProcess.getServicesTime();
        }
    }

这是那老哥博客
[link]https://www.cnblogs.com/daheww/p/10154455.html

时间片轮转法

运用一个队列,存储所有等待队列,每次循环先把后来的加入到队尾,再把运行完的加入到队尾,只要进程数大于零且队列不为空,取出队首元素。当前进程剩余运行时间等于总需要服务时间-时间片。然后判断剩余运行时间是否小于等于0.小于等于则结束时间等于当前时间加上进循环之前的剩余服务时间。进程数-1。

private void calc() {
   
        int timeNow = 0;
        Queue queue=new LinkedList();
        int processRemain = processNumber;
        boolean noProcessRunInThisTurn=true;
        Process opProcess;Process linshi=null;
        int extime=0;


        while (processRemain != 0) {
   

            if(arrtime.contains(timeNow)){
   
                queue.add(processList.get(arrtime.indexOf(timeNow)));
            }
            if(timeNow==extime&&linshi!=null){
   
                noProcessRunInThisTurn=true;
                if(timeNow!=0&&linshi.getRemainServiceTime()>0)
                    queue.add(linshi);
            }
            if(noProcessRunInThisTurn&&!queue.isEmpty()) {
   
                opProcess = (Process) queue.
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值