SJF(最短作业优先)

#include<stdio.h>
#include<stdlib.h>
#define N 100

typedef struct process
{
 int num;
 int time;
 int start;
 int end;
 int begin;
 int freetime;
 int arrivetime;
 int finish;
 int turn;
 double average;
}P;

P a[N],b;
int wordtime=0;

void sjf(int i,int j,int t,int n){
 a[0].finish=a[0].arrivetime+a[0].freetime;//给予a[0]初值
 wordtime=a[0].finish;
    a[0].turn=a[0].time;
 a[0].average=(float)a[0].turn/a[0].time;
 for(i=1;i<n;i++)//执行
 {
  for(j=i+1;j<n;j++)
  {
   if(a[j].arrivetime<=a[i-1].finish)
   {
    for(t=i;t<=j;t++)
    {
     if(a[t].time>a[j].time)
     {
      b=a[j];
      a[j]=a[t];
      a[t]=b;
     }
    }
   }
  } 
  if(a[i].arrivetime<a[i-1].finish)
  {
   a[i].finish=a[i-1].finish+a[i].freetime;
   a[i].turn=a[i].finish-a[i].arrivetime;
  }
  else
  {
   a[i].finish=a[i].arrivetime+a[i].freetime;
   a[i].turn=a[i].time;
  }
  a[i].average=(float)a[i].turn/a[i].time;
  wordtime=a[i].finish;
 }
 

时间: 2024-08-20 05:44:44

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

最短作业优先(SJF)

1. 最短作业优先: 最短作业优先(SJF)是一种调度任务请求的调度策略.每个任务请求包含有请求时间(即向系统提交的请求的时间)和持续时间(即完成任务所需时间). 当前任务完成后,SJF策略会选择最短持续时间执行任务,若最短持续时间相同,则选择最早请求时间的任务.任务等待时间为请求时间和实际开始时间之差.    "短作业优先"="最短剩余时间优先" 2. 实例: 假设系统一直执行任务,从未空闲.设计程序,输入请求时间表和对应的持续时间表,以及任务数量,计算平均等待时

最短作业优先调度

#include<stdio.h>#define Time int#define M 100typedef struct process{    char name[M];//进程名    int priority;//优先数    int reachtime;//到达时间    int needtime;//需要时间    int usedtime;//已用时间    int completetime;//完成时间    int time1;//周转时间内    int time2;//带权

2017 中心笔试题目 最短作业优先(SJF)

#include <iostream> #include <vector> #include <stdlib.h> #include <algorithm> using namespace std; /********************题目要求*********************************** 最短左右优先,输出总等待时间 测试用例: 任务: A,B,C,D 请求时间:0,2,4,5 持续时间:7,4,1,4 求平均等待时间 ***

最短作业优先

#include<stdio.h> #include<stdlib.h> #define N 100 typedef struct process { int num; int time; int start; int end; int begin; int freetime; int arrivetime; int finish; int turn; double average; }P; P a[N],b; int wordtime=0; void sjf(int i,int

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

假设有n项作业位于就绪队列中,这些作业的提交时间用数组requestTimes按照提交时间的先后顺序存储,对应的作业服务时间(持续时间)用数组durations存储.采用SJF算法,计算n项作业的平均等待时间.当存在多个相同长度的短作业时,按照提交时间的先后顺序进行调度.假设0<= n <= 100.求出所有作业的平均等待时间. 函数原型:void minWaitingTime(int requestTimes[],int durations[],int n) 测试用例: 输入 40 2 4

模拟处理机作业调度---短作业优先调度算法

短作业优先调度原理 短作业优先调度算法是指对短作业优先调度的算法.短作业优先(SJF)的调度算法是从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行. 算法流程图 JCB 代表一个作业,JCB 的结构如下: 模拟实现 在屏幕上输出以下作业状态表: 可以通过键盘命令动态地增加作业(即增加一个 JCB 数 据结构项).增加作业后,作业状态表内容可更新查看. 算法代码: #include "stdafx.h" #include<iostream> #inclu

【ZX笔试】短作业优先算法

时间复杂度为O(n*n),空间复杂度为O(n)的解法 1 // ShortJobFirst.cpp : 定义控制台应用程序的入口点. 2 // 3 4 #include "stdafx.h" 5 #include <iostream> 6 #include <vector> 7 8 using namespace std; 9 10 /* 11 每一步都计算当前时间和总的等待时间,根据当前时间(cpu_time)找到已经就绪的作业下标, 12 保存到vec_re

操作系统中的几种调度算法(JAVA版)

1 import java.text.DecimalFormat; 2 import java.util.Arrays; 3 import java.util.Scanner; 4 5 /* 6 * 作者:Chensx1020 7 * 时间:2016-12-11 8 * 功能:CPU调度算法 9 * 1)先到先服务调度算法(FCFS) 10 * 2)最短作业优先调度算法,非抢占式(SJF) 11 * 3)优先级调度算法(PSA) 12 * 4)轮转法调度算法(RR) 13 * 5)最高响应比调度

(操作系统)实验二 作业调度

一.目的和要求 1. 实验目的 (1)加深对作业调度算法的理解: (2)进行程序设计的训练. 2.实验要求 用高级语言编写一个或多个作业调度的模拟程序. 单道批处理系统的作业调度程序.作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所运行的时间等因素.      作业调度算法: 1)        采用先来先服务(FCFS)调度算法,即按作业到达的先后次序进行调度.总是首先调度在系统中等待时间最长的作业. 2)        短作业优