短作业优先调度算法例题详解(一)
操作系统短作业优先进程调度算法

操作系统短作业优先进程调度算法操作系统中的进程调度算法是指决定哪个进程在一些时间点被执行的规则和策略。
短作业优先(SJF)是一种常见的进程调度算法,它根据进程的执行时间来安排执行顺序。
短作业优先算法的思想是,优先调度执行所需执行时间最短的进程,以最大程度地减少平均等待时间和周转时间。
这个算法适合用于处理那些执行时间相对较短的任务。
SJF算法可以按两种方式实现:非抢占和抢占。
非抢占式短作业优先调度算法是指一旦一个进程开始执行,就不能被中断或抢占,直到它完成或由于其中一种原因被阻塞。
抢占式短作业优先调度算法是指一个新到达的进程可以抢占正在执行的进程,如果新到达的进程的执行时间比当前正在执行的进程更短。
对于非抢占式短作业优先调度算法,可以使用一个队列来保存进程,并通过比较它们的执行时间来确定下一个要执行的进程。
具体实现如下:1.首先,将所有待处理的进程添加到队列中。
2.对队列中的进程按照执行时间进行排序,按照从短到长的顺序执行。
3.执行每个进程直到完成,然后将其从队列中移除。
4.重复步骤3,直到所有进程都执行完成。
对于抢占式短作业优先调度算法,可以使用一个就绪队列和一个运行队列来实现。
就绪队列用于保存已到达但尚未执行的进程,而运行队列是当前正在运行的进程。
具体实现如下:1.首先,将所有到达的进程添加到就绪队列中,按照到达时间进行排序。
2.从就绪队列中选择执行时间最短的进程,并将其添加到运行队列中。
3.执行运行队列中的进程直到完成或被抢占。
4.如果有新的进程到达,将其加入到就绪队列中。
5.如果当前运行的进程被抢占,将其放回就绪队列中,并选择一个新的执行时间最短的进程来执行。
6.重复步骤3至5,直到所有进程都完成。
非抢占式短作业优先调度算法可以保证最短平均等待时间和周转时间,但存在一个问题,即长作业会被无限期地推迟。
为了解决这个问题,可以使用抢占式短作业优先调度算法,但这也会导致较多的上下文切换。
因此,根据具体情况和需求,可以选择适合的算法来实现进程调度。
先来先服务FCFS和短作业优先SJF进程调度算法

先来先服务FCFS和短作业优先SJF进程调度算法实验一先来先服务FCFS和短作业优先SJF进程调度算法一需求分析【实验目的】通过这次实验,加深对进程概念的理解,进一步掌握进程状态的转变、进程调度的策略及对系统性能的评价方法。
【实验内容】问题描述:设计程序模拟进程的先来先服务FCFS和短作业优先SJF调度过程。
假设有n个进程分别在T, … ,T时刻到达系统,它们需要的服1n务时间分别为S, … ,S。
分别采用先来先服务FCFS和短作业优先SJF1n进程调度算法进行调度,计算每个进程的完成时间、周转时间和带权周转时间,并且统计n个进程的平均周转时间和平均带权周转时间。
程序需求:1,进程个数n,每个进程的到达时间T1, … ,Tn和服务时间S1, … ,Sn,2,要求采用先来先服务FCFS和短作业优先SJF分别调度进程运行,计算每个进程的完成时间,周转时间和带权周转时间,并且计算所有进程的平均周转时间和带权平均周转时间,4,输出:输出计算出来的每个进程的完成时间,周转时间、带权周转时间、所有进程的平均周转时间以及带权平均周转时间。
5,测试数据:0 1 2 3 4 到达时间4 35 2 4 服务时间4 7 12 14 18 完成时间4 6 10 11 14 9 周转时间1 2 2 5.5 3.5 2.8 带权周转时间4 9 18 6 13 完成时间4 8 16 3 9 8 周转时间1 2.67 3.1 1.5 2.25 2.1 带权周转时间二概要设计1)程序中进程调度时间变量描述如下: const int MaxNum=100;//定义进程的最大总数 double ArrivalTime[MaxNum];到达时间double ServiceTime[MaxNum]; 服务时间 double FinishTime[MaxNum]; 完成时间double WholeTime[MaxNum]; 周转时间 double WeightWholeTime[MaxNum];带权周转时间 double AverageWT_FCFS; 定义FCFS平均周转时间 double AverageWWT_FCFS; 定义FCFS平均带权周转时间 double AverageWT_SJF; 定义SJF平均周转时间 double AverageWWT_SJF; 定义SJF平均带权周转时间2)进程调度的实现过程如下:, 变量初始化,, 接收用户输入n,T, … ,T,S, … ,S, 1n1n, 按照算法进行进程调度,计算进程的完成时间、周转时间和带权周转时间,, 计算所有进程的平均周转时间和平均带权周转时间, , 按格式输出调度结果。
作业调度十进制举例

作业调度算法
例题:有四个作业,其到达时刻和作业长度如下表所示:
请用先来先服务、短作业优先和响应比高者优先几种调度算法,分别计算这批作业的平均周转时间和平均带权周转时间。
对于这批作业来说,哪种调度算法更好一些?(可用10进制,也可以用60进制来计算该题)
参考解答:
先来先服务调度(按十进制):
平均转周转时间:T=(2+4.7+4.1+4.3)/4=3.775≈3.8(小时)
平均带权转周转时间:W=(2/2+4.7/3+4.1/0.1+4.3/0.5)/4=13.04(小时)
平均转周转时间:L=(2+5.3+1.1+1.3)/4=9.7/4=2.425
平均带权转周转时间:L=(2/2+5.3/3+1.1/0.1+1.3/0.5)/4=4.09 优先比高者优先调度(按十进制):
平均周转时间:T=(2+5.3+1.1+1.3)/4=9.7/4=2.425
平均带权转周转时间:W=(2/2+5.3/3+1.1/0.1+1.3/0.5)/4=4.09 在本题目中,响应比高者优先和短作业优先的调度方法都比较好。
最短作业优先调度算法(SJF算法)的C++实现

在作业调度中,该算法每次从后备作业队列中挑选估计服务时间最短的一个或几个作业,将他们调入内存,分配必要的资源,创建进程并放入就绪队列。
与在进程调度中的原理类似。
假设有n项作业位于就绪队列中,这些作业的请求时间用数组requestTimes按照提交时间的先后顺序存储,对应的作业服务时间(也称持续时间)用数组durations存储。
当每个作业被完成后,接下来优先选择服务时间(持续时间)短的,如果多个服务时间一样,则优先选择请求时间最先的。
采用SJF算法,计算n项作业的平均等待时间。
所有要执行的任务的请求时间必须在上一个任务完成的时间内。
假设0<= n <= 100。
测试用例:
requestTimes = {0, 2, 4, 5};
durations = {7, 4, 1, 4};
可以理解为一定首先执行第一个任务,请求时间为0,执行了7个时间单位;
接下来在服务时间最短的中选择,显然是任务3,请求时间为4,执行1个时间单位;
再接下来发现2和4这两个任务服务时间一样短,则优先选择请求时间最先的,显然是选择任务2,执行4个时间单位
最后是任务4(并且只有任务4了),请求时间为5,执行4个时间单位
等待时间:任务1是0,任务3是3,任务2是5,任务4是7,所以平均等待时间是4。
短作业优先算法

短功课(进程)优先调度算法之杨若古兰创作1.短功课(进程)优先调度算法SJ(P)F,是指对短功课或短进程优先调度的算法.它们可以分别用于功课调度和进程调度.短功课优先(SJF)的调度算法是从后备队列当选择一个或若干个估计运转时间最短的功课,将它们调入内存运转.而短进程(SPF)调度算法则是从就绪队列当选出一个估计运转时间最短的进程,将处理机分配给它,使它立即履行并不断履行到完成,或发生某事件而被梗阻放弃处理机再从头调度.SJ(P)F调度算法能无效地降低功课(进程)的平均等待时间,提高零碎吞吐量.该算法对长功课晦气,完整未考虑功课的紧迫程度.2.流程图3.代码#include<iostream.h>#include<string.h>#include<stdlib.h>struct sjf{char name[10];float arrivetime;float servicetime;float starttime;float finishtime;float zztime;float dqzztime;};sjf a[100];void input(sjf *p,int N){ int i;printf("intput the process's name & arrivetime & servicetime:\nfor exmple: a 0 100\n");for(i=0;i<=N1;i++){printf("input the %dth process's information:\n",i+1);scanf("%s%f%f",&p[i].name,&p[i].arrivetime,&p[i].ser vicetime);}}void Print(sjf *p,float arrivetime,float servicetime,float starttime,float finishtime,float zztime,float dqzztime,int N) {int k;printf("run order:");printf("%s",p[0].name);for(k=1;k<N;k++){printf(">%s",p[k].name);}printf("\nthe process's information:\n");printf("\nname\tarrive\tservice\tstart\tfinish\tzz\tdqzz\n ");for(k=0;k<=N1;k++){ printf("%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t\n", p[k].name,p[k].arrivetime,p[k].servicetime,p[k].starttime,p[k]. finishtime,p[k].zztime,p[k].dqzztime);}}//pai xuvoid sort(sjf *p,int N){for(int i=0;i<=N1;i++)for(int j=0;j<=i;j++)if(p[i].arrivetime<p[j].arrivetime){sjf temp;temp=p[i];p[i]=p[j];p[j]=temp;}}//yun xing jieduanvoid deal(sjf *p, float arrivetime,float servicetime,float starttime,float finishtime,float &zztime,float &dqzztime,int N){ int k;for(k=0;k<=N1;k++){if(k==0){p[k].starttime=p[k].arrivetime;p[k].finishtime=p[k].arrivetime+p[k].servicetime;}else{p[k].starttime=p[k1].finishtime;p[k].finishtime=p[k1].finishtime+p[k].servicetime;} }for(k=0;k<=N1;k++){p[k].zztime=p[k].finishtimep[k].arrivetime;p[k].dqzztime=p[k].zztime/p[k].servicetime;}}void sjff(sjf *p,int N){floatarrivetime=0,servicetime=0,starttime=0,finishtime=0,zztim e=0,dqzztime=0;sort(p,N);for(int m=0;m<N1;m++){if(m==0)p[m].finishtime=p[m].arrivetime+p[m].servicetime;elsep[m].finishtime=p[m1].finishtime+p[m].servicetime;int i=0;for(int n=m+1;n<=N1;n++){if(p[n].arrivetime<=p[m].finishtime)i++;}float min=p[m+1].servicetime;int next=m+1;//m+1=nfor(int k=m+1;k<m+i;k++){if(p[k+1].servicetime<min){min=p[k+1].servicetime;next=k+1;}}sjf temp;temp=p[m+1];p[m+1]=p[next];p[next]=temp;}deal(p,arrivetime,servicetime,starttime,finishtime,zztime,dqz ztime,N);Print(p,arrivetime,servicetime,starttime,finishtime,zztime,dq zztime,N);}int main(){ int N;printf("短功课优先调度算法\n");printf("input the process's number:\n");scanf("%d",&N);input(a,N);sjf *b=a;sjf *c=a;sjff(b,N);system("PAUSE");}4.运转结果5.心得体会课程设计结束了,在此次的课程设计中不但检验了我所进修的常识,也培养了我如何去做一件事情,又如何完成一件事情的能力.通过模拟进程的调度成绩,更加深了我对于操纵零碎理论的理解,在本人的动手操纵过程中,能够体会成功的喜悦和碰到成绩本人解决的能力,对于我来说是一次提高,让本人多多的在实践中可以加深对理论的理解,也让我明白了当前应当如何更好,更高效的进修,在当前,我会更加努力.。
抢占式短作业优先例题

选择题在抢占式短作业优先调度算法中,当一个新作业到达时,如果它的执行时间比当前正在执行的作业短,那么:A. 当前作业继续执行,新作业等待B. 当前作业被挂起,新作业开始执行(正确答案)C. 当前作业和新作业同时执行D. 系统崩溃,无法决定假设有三个作业A、B、C,它们的执行时间分别为2、4、1个时间单位。
如果它们按照A、B、C的顺序到达,且使用抢占式短作业优先调度,那么作业C的开始时间是:A. 0B. 2(正确答案)C. 4D. 6抢占式短作业优先调度算法的主要缺点是:A. 可能导致饥饿现象(正确答案)B. 平均等待时间最短C. 实现起来非常简单D. 总是能最优地利用CPU在一个采用抢占式短作业优先调度的系统中,如果一个长作业正在执行,此时到达了一个非常短的作业,那么:A. 长作业继续执行,短作业等待B. 长作业被中断,短作业开始执行(正确答案)C. 系统会崩溃D. 长作业和短作业同时执行假设有四个作业,它们的执行时间分别为3、1、4、2个时间单位。
如果它们同时到达,且使用抢占式短作业优先调度,那么平均等待时间是:A. 1.5个时间单位B. 2.0个时间单位C. 2.5个时间单位(正确答案)D. 3.0个时间单位抢占式短作业优先调度算法适用于:A. 批处理系统B. 交互式系统C. 实时系统D. 作业执行时间差异较大的系统(正确答案)在抢占式短作业优先调度中,如果两个作业同时到达且它们的执行时间相同,那么:A. 先到达的作业先执行(根据某种次优准则,如FIFO)B. 后到达的作业先执行C. 系统崩溃,无法决定D. 两个作业同时执行(正确答案)假设有三个作业,执行时间分别为5、3、1个时间单位,它们按照3、1、5的顺序到达。
如果使用抢占式短作业优先调度,那么作业5的完成时间是:A. 6个时间单位B. 7个时间单位C. 8个时间单位D. 9个时间单位(正确答案)抢占式短作业优先调度算法的一个关键特点是:A. 它总是选择执行时间最长的作业B. 它总是选择到达时间最早的作业C. 它可能选择执行过程中到达的较短作业(正确答案)D. 它总是按照作业到达的顺序执行。
短作业优先调度算法(SJF)
短作业优先调度算法(SJF)假设有n项作业位于就绪队列中,这些作业的提交时间⽤数组requestTimes按照提交时间的先后顺序存储,对应的作业服务时间(持续时间)⽤数组durations存储。
采⽤SJF算法,计算n项作业的平均等待时间。
当存在多个相同长度的短作业时,按照提交时间的先后顺序进⾏调度。
假设0<= n <= 100。
求出所有作业的平均等待时间。
函数原型:void minWaitingTime(int requestTimes[],int durations[],int n)测试⽤例:输⼊40 2 4 57 4 1 4输出:4.01 #include <stdio.h>2 #include <stdlib.h>3 #include <string.h>45#define MAX 0x7FFFFFFF67void minWaitingTime(int requestTimes[],int durations[],int n)8 {9int i,time,j,k;10float res;11int index,arriveTime,indextemp;12int *done = (int *)malloc(sizeof(int) * n); //表⽰作业是否执⾏过,1表⽰执⾏完毕,0表⽰未执⾏13int *wait = (int *)malloc(sizeof(int) * n); //表⽰等待时间14for(i = 0; i < n; ++i){15 wait[i] = 0;16 done[i] = 0;17 }1819 time = 0; //time表⽰总作业执⾏时间20for(i = 0; i < n; i++){21if(i == 0){ //执⾏第⼀个作业22 time += durations[i];23 done[i] = 1;24for(j = 1; j < n; j++){25if(requestTimes[j] < time)26 wait[j] = time - requestTimes[j];27 }28 }29else{30 index = GetMin(durations,done,n);31//判断是否有多个最短作业,如有选择其中先到达的32 arriveTime = requestTimes[index];33for(indextemp = index + 1; indextemp < n; indextemp++){34if(done[indextemp] == 0 && durations[indextemp] == durations[index] &&35 requestTimes[indextemp] < arriveTime)36 index = indextemp;37 }3839 time += durations[index];40 done[index] = 1;41//执⾏选出的最短作业,并更新其它作业的等待时间42for(indextemp = 0; indextemp < n && i < n-1; indextemp++)43if(done[indextemp] == 0 &&requestTimes[indextemp] < time)44 wait[indextemp] = time - requestTimes[indextemp];45 }46 }4748 res = 0.0;49for(i = 0; i < n; i++)50 res += wait[i];5152 printf("%f\n",res / n);5354 }55//每次取出服务时间最短且⽰执⾏过的作业56int GetMin(int durations[],int done[],int n)57 {58int i,j,min = MAX;59for(i = 0; i < n; i++)60if(durations[i] < min && done[i] == 0){61 min = durations[i];62 j = i;63 }64return j;65 }6667int main()68 {69int requestTimes[100];70int durations[100];71int i,n;72 scanf("%d",&n);73for(i = 0; i < n; i++)74 scanf("%d",&requestTimes[i]);75for(i = 0; i < n; i++)76 scanf("%d",&durations[i]);7778 minWaitingTime(requestTimes,durations,n); 7980 system("pause");81return0;82 }。
最短作业优先调度算法
最短作业优先调度算法一、前言最短作业优先调度算法(Shortest Job First,简称SJF)是一种常见的进程调度算法,主要用于处理多个进程同时请求资源的情况。
SJF算法的核心思想是优先调度执行时间最短的进程,以提高系统的响应速度和效率。
二、SJF算法的原理SJF算法是一种非抢占式调度算法,即一旦一个进程被分配到CPU上运行,它将一直运行直到完成或者被阻塞。
该算法基于每个进程的执行时间来进行排序,并按照顺序依次执行。
三、SJF算法的实现1. 首先需要获取所有待调度进程的执行时间,并按照从小到大的顺序进行排序。
2. 将排序后的进程依次加入就绪队列中。
3. 从就绪队列中选择执行时间最短的进程,并将其分配给CPU进行运行。
4. 如果该进程在运行过程中发生阻塞,则将其移到阻塞队列中等待唤醒。
5. 当一个进程完成时,检查就绪队列中是否还有未完成的进程,如果有,则重复步骤3;否则结束调度。
四、SJF算法存在的问题1. SJF算法假设能够准确地知道每个进程的执行时间,但实际上这是很难做到的。
如果估算不准,可能会导致进程等待时间过长或者资源浪费。
2. SJF算法容易出现“饥饿”现象,即某些进程由于执行时间较长而一直无法被调度执行。
3. SJF算法可能会导致运行时间较短的进程优先级过高,而忽略了其他因素如优先级、进程类型等。
五、SJF算法的改进针对SJF算法存在的问题,可以采取以下措施进行改进:1. 引入抢占式调度机制,在某些情况下可以强制中断正在运行的进程,并将CPU分配给更紧急的任务。
2. 采用动态优先级调度策略,将每个进程的优先级根据其等待时间进行动态调整。
当一个进程等待时间越长时,其优先级越高。
3. 综合考虑多种因素来确定每个进程的优先级。
除了执行时间外,还应考虑其他因素如I/O操作、内存需求、用户优先级等。
六、总结SJF算法是一种简单有效的调度算法,在处理大量短作业请求时具有较好的性能表现。
但是,由于其存在的问题,需要根据实际情况进行合理的改进和调整,以提高系统的性能和稳定性。
短作业优先SJF调度算法
min=p[k+1].servicetime;
next=k+1;
}
}
sjf temp;
temp=p[m+1];
p[m+1]=p[next];
p[next]=temp;
}
deal(p,arrivetime,servicetime,starttime,finishtime,zztime,dqzztime,N);
for(k=0;k<=N-1;k++)
{printf("%s\t%-.2f\t%-.2f\t%-.2f\t%-.2f\t%-.2f\t%-.2f\t\n",p[k].name,p[k].arrivetime,p[k].servicetime,p[k].starttime,p[k].finishtime,p[k].zztime,p[k].dqzztime);
sort(p,N);
for(int m=0;m<N-1;m++)
{
if(m==0)
p[m].finishtime=p[m].arrivetime+p[m].servicetime;
else
p[m].finishtime=p[m-1].finishtime+p[m].servicetime;
int i=0;
}
}
for(k=0;k<=N-1;k++)
{
p[k].zztime=p[k].finishtime-p[k].arrivetime;
p[k].dqzztime=p[k].zztime/p[k].servicetime;
}
}
void sjff(sjf *p,int N)
关于作业调度算法
关于作业调度算法在《计算机操作系统》教材中,介绍了作业调度算法和进程调度算法。
其中作业调度算法主要有先来先服务法FCFS 、短作业优先法SJF 、最高响应比优先法HRN 、定时轮转法和优先数法。
在进程调度算法中主要介绍了先来先服务法FCFS 、轮转法RR 、多级反馈轮转法和优先数法。
需要指出的是:(1)在作业调度和进程调度中同时出现的算法,如FCFS 、RR 、优先数法,其使用原理是基本相同的;(2)作业调度算法和进程调度算法应严格与存储管理中的“请求淘汰换页算法”相区别,注意不要混淆。
调度算法举例:【例1】下表给出作业l ,2,3的提交时间和运行时间。
采用先来先服务调度算法和短作业优先调度算法,试问作业调度次序和平均周转时间各为多少?(时间单位:小时,以十进制进行计算。
)分析 用一个作业执行时间图来形象地表示作业的执行情况,帮助我们理解此题。
采用先来先服务调度算法,是按照作业提交的先后次序挑选作业,先进入的作业优先被挑选。
然后按照“排队买票”的办法,依次选择作业。
其作业执行时间图如下:采用短作业优先调度算法,作业调度时根据作业的运行时间,优先选择计算时间短且资源能得满足的作业。
其作业执行时间图如下:由于作业1,2,3是依次到来的,所以当开始时系统中只有作业1,于是作业1先被选中。
在8.0时刻,作业1运行完成,这时系统中有两道作业在等待调度,作业2和作业3,按照短作业优先调度算法,作业3只要运行1个时间单位,而作业2要运行4个时间单位,于是作业3被优先选中,所以作业3先运行。
待作业3运行完毕,最后运行作业2。
作业调度的次序是1,3,2。
另外,要记住以下公式:作业i 的周转时间T i =作业完成时间-作业提交时间 系统中n 个作业的平均周转时间n T T ni i1)(1⨯=∑=,其中Ti 为作业i 的周转时间。
解:采用先来先服务调度策略,则调度次序为l、2、3。
作业号提交时间运行时间开始时间完成时间周转时间1 0.0 8.0 0.0 8.0 8.02 0.4 4.0 8.0 12.0 11.63 1.0 1.0 12.0 13.0 12.0平均周转时间T=(8+11.6+12)/3=10.53采用短作业优先调度策略,则调度次序为l、3、2。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
短作业优先调度算法例题详解(一)
短作业优先调度算法例题
简介
短作业优先调度算法(SJF)是一种常用的进程调度算法,也被称为最短作业优先调度算法。
它通过选择剩余执行时间最短的作业来调
度进程,以提高系统的吞吐量和响应时间。
本文将在此背景下给出一
个例题,并详细解释短作业优先调度算法的实现过程。
短作业优先调度算法的例题
假设有以下四个进程需要执行:
1.进程A,需要执行时间为5个单位时间
2.进程B,需要执行时间为3个单位时间
3.进程C,需要执行时间为8个单位时间
4.进程D,需要执行时间为1个单位时间
解题步骤
使用短作业优先调度算法调度上述四个进程,按照以下步骤进行:1.计算每个进程的执行时间,得到以下结果:
–进程A,需要执行时间为5个单位时间
–进程B,需要执行时间为3个单位时间
–进程C,需要执行时间为8个单位时间
–进程D,需要执行时间为1个单位时间
2.按照执行时间的大小对进程进行排序,得到以下顺序:
–进程D(执行时间为1个单位时间)
–进程B(执行时间为3个单位时间)
–进程A(执行时间为5个单位时间)
–进程C(执行时间为8个单位时间)
3.按照排序后的顺序依次执行进程,得到以下调度结果:
–进程D(执行时间为1个单位时间)
–进程B(执行时间为3个单位时间)
–进程A(执行时间为5个单位时间)
–进程C(执行时间为8个单位时间)
结论
通过短作业优先调度算法,进程的执行顺序被合理调度,系统的响应时间得到了改善。
短作业优先调度算法可有效减少作业的平均等待时间,提高系统的吞吐量。
总之,短作业优先调度算法是一种简单且高效的进程调度算法,适用于在大多数情况下需要快速响应任务的系统。
它通过选择剩余执行时间最短的作业来调度进程,以提高系统性能。
在实际应用中,短作业优先调度算法需要根据系统实际情况进行调优,以获得更好的性能表现。
以上就是关于短作业优先调度算法例题的详细解释。
希望通过本文的介绍,读者能够对短作业优先调度算法有更加深入的了解。