1. 最短作业优先:

最短作业优先(SJF)是一种调度任务请求的调度策略。每个任务请求包含有请求时间(即向系统提交的请求的时间)和持续时间(即完成任务所需时间)。

当前任务完成后,SJF策略会选择最短持续时间执行任务,若最短持续时间相同,则选择最早请求时间的任务。任务等待时间为请求时间和实际开始时间之差。

   “短作业优先”=“最短剩余时间优先”

2. 实例:

假设系统一直执行任务,从未空闲。设计程序,输入请求时间表和对应的持续时间表,以及任务数量,计算平均等待时间。

输入例子:

[0,1,3,9],[2,1,7,5],4

输出例子:

0.5

解题思路:

按照持续时间长短排序,只要请求时刻<=当前时刻就执行,否则找满足请求时刻<=当前时刻,持续时间次短的执行。

#include <iostream>  

#include <vector>  

using namespace std;

void sortDuration(int *arr1, int *arr2, int n){      //arr1为排序数列,arr2为跟随变化数列,第一行不参加排序  

    for (int i = ; i < n; i++)

        for (int j = ; j<n -  - i; j++)

            if (arr1[j]>arr1[j + ]){

                int temp1 = arr1[j];

                int temp2 = arr2[j];

                arr1[j] = arr1[j + ];

                arr2[j] = arr2[j + ];

                arr1[j + ] = temp1;

                arr2[j + ] = temp2;

            }

}

int main(){

    int request[] = { , , ,  };

    int duration[] = { , , ,  };

    int n = ;

    int time = duration[];

    double wait = ;

    vector<bool> book;

    for (int i = ; i < n; i++)

        book.push_back();

    sortDuration(duration, request, n);

    for (int i = ; i < n; i++)

        for (int j = ; j < n; j++)

            if (book[j] ==  && request[j] <= time){

                book[j] = ;

                wait += time - request[j];

                time += duration[j];

                break;

            }

    wait = wait / n;

    cout << wait << endl;

    //getchar();  

}
 

最短作业优先(SJF)的更多相关文章

  1. C语言模拟实现先来先服务(FCFS)和短作业优先(SJF)调度算法

    说明 该并非实现真正的处理机调度,只是通过算法模拟这两种调度算法的过程. 运行过程如下: 输入进程个数 输入各个进程的到达事件 输入各个进程的要求服务事件 选择一种调度算法 程序给出调度结果:各进程的 ...

  2. 短作业优先调度算法(SJF)

    假设有n项作业位于就绪队列中,这些作业的提交时间用数组requestTimes按照提交时间的先后顺序存储,对应的作业服务时间(持续时间)用数组durations存储.采用SJF算法,计算n项作业的平均 ...

  3. OS作业模拟SJF和FCFS

    一个OS的作业, 用于模拟短作业优先 和 先来先服务两种作业调度方式. #!/usr/bin/python3.5 ## Modify the SJF and FCFS algorithm in the ...

  4. 【操作系统】先来先服务和短作业优先算法(C语言实现)

    [操作系统] 先来先服务算法和短作业优先算法实现 介绍: 1.先来先服务 (FCFS: first come first service) 如果早就绪的进程排在就绪队列的前面,迟就绪的进程排在就绪队列 ...

  5. 最短寻道优先算法(SSTF)——磁盘调度管理

    原创 最近操作系统实习,敲了实现最短寻道优先(SSTF)——磁盘调度管理的代码. 题目阐述如下: 设计五:磁盘调度管理 设计目的: 加深对请求磁盘调度管理实现原理的理解,掌握磁盘调度算法. 设计内容: ...

  6. 最短寻道优先算法----SSTF算法

    请珍惜小编劳动成果,该文章为小编原创,转载请注明出处. 该算法选择这样的进程,其要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短 java代码实现如下: import java.ut ...

  7. [OS] 操作系统常考知识点

    转自:http://jennica.space/2017/03/21/os-principle/ 大纲如下: 1.操作系统概述2.操作系统运行环境3.进程线程模型4.处理器调度5.同步机制6.存储模型 ...

  8. CPU调度算法

    批处理系统中的调度算法: *需要考虑的因素: 1. 吞吐量 2. cpu利用率 3. 周转时间 4. 公平性* 1.先来先服务: FCFS: 优点:实现简单 缺点:可能造成周转时间长 2.最短作业优先 ...

  9. 《操作系统_FCFS和SJF》

    先来先服务FCFS和短作业优先SJF进程调度 转自:https://blog.csdn.net/qq_34374664/article/details/73231072 一.概念介绍和案例解析 FCF ...

随机推荐

  1. poj 3131 双向搜索+hash判重

    题意: 初始状态固定(朝上的全是W,空格位置输入给出),输入初始状态的空格位置,和最终状态朝上的位置,输出要多少步才能移动到,超过30步输出-1. 简析: 每一个格子有6种状态,分别是 0WRB, 1 ...

  2. 获取android-5.0.2_r1代码6.7G

    获取 android-5.0.2_r1 源代码的坎坷路: 服务器相关 ====== * 国外服务器直接拉取,我一共有多个国外服务器,在获取android代码时下载速度都能到10MB/s的下载速度甚至更 ...

  3. Okam(奥卡姆):小程序开发框架

    Okam(奥卡姆):小程序开发框架 Okam 是什么 `Okam` 一个面向小程序开发的开发框架,开发体验类 `Vue`.详情 Okam 对各小程序的支持情况 支持 百度小程序 支持 微信小程序 支持 ...

  4. XmlnsDefinitionAttribute Is Pretty Nifty

    When we want to declaratively use our custom controls or reference the types we defined in XAML, we ...

  5. [翻译] SoundManager 音频管理器

    SoundManager 音频管理器 https://github.com/nicklockwood/SoundManager Purpose SoundManager is a simple cla ...

  6. 【GISER&&Painter】Chapter01:WebGL渲染初体验

    基于上一篇OpenGL的渲染原理,这两周又陆续接触了一些关于WebGL绘图的一些内容,因为刚入门,很多东西又很晦涩,所以特意花了小半天的时间整理了一下,特此记录. 零  画一个多边形吧! 把一个多边形 ...

  7. Python学习(四)数据结构 —— list tuple range

    序列类型 list   tuple   range list 和 tuple list: 列表,由 [] 标识: 有序:可改变列表元素 tuple: 元组,由 () 标识: 有序:不可改变元组元素(和 ...

  8. 复习原生ajax

    function ajax(url, fnSucc, fnFaild) { //1.创建 if(window.XMLHttpRequest) { var oAjax=new XMLHttpReques ...

  9. vue-router路由元信息详解

    一.官方文档 路由元信息:定义路由的时候可以配置 meta 字段 const router = new VueRouter({ routes: [ { path: '/foo', component: ...

  10. Linux 查看当前时间和修改系统时间

    一.查看和修改Linux的时区 1. 查看当前时区 命令: date -R 2. 修改设置Linux服务器时区 方法 A 命令 : tzselect 方法 B 仅限于RedHat Linux 和 Ce ...