作业调度之最短作业优先算法5例题解析
操作系统短作业优先调度算法1

操作系统短作业优先调度算法1操作系统实验题⽬:实现⾮抢占式短作业优先调度算法要求:1.系统共有100个随机到达的作业。
要求为每个作业设定到达时间和需要运⾏的时间。
2.按照短作业优先进⾏调度,直到所有作业完成。
3.计算每个作业的周转时间,计算平均周转时间。
提交报告1.实验报告打印稿(参照学校有关报告格式)。
2.刻录⼀张光盘。
光盘内容:⽤学号+姓名为每个同学建⽴⽬录,⽂件包括报告的电⼦版,程序源代码。
⼀、主要数据结构及其说明算法的基本概念和原理:本次课程设计主要是采⽤短作业优先算法进程的进程调度过程。
短作业优先调度算法,是指对短作业或短进程优先调度的算法。
他们可以分别⽤于作业调度和进程调度,短作业优先的调度算法是从后备队列中选择⼀个或若⼲个估计运⾏时间最短的作业,将他们调⼊内存运⾏。
⽽短进程优先调度算法则是从就绪队列中选出⼀个估计运⾏时间最短的进程,将处理机分配给他,使它⽴即执⾏并⼀直执⾏到完成,或发⽣某事件⽽被阻塞放弃处理机时再度重新调度。
本程序采⽤了⾮抢占式短作业优先调度。
⽽⾮抢占式这种⽅式,⼀旦把处理机分配给某进程后,便让该进程⼀直执⾏,直⾄该进程完成或发⽣某事件⽽被阻塞时,才再把处理机分配给其它进程,决不允许某进程抢占已经分配出去的处理机。
这种调度⽅式的优点是实现简单,系统开销⼩,适⽤于⼤多数的批处理系统环境。
但它难以满⾜紧急任务的要求——⽴即执⾏,因⽽可能造成难以预料的后果。
因此,在要求⽐较严格的实时系统中,不宜采⽤这种调度⽅式。
本课程设计主要是在满⾜要求多道单处理机的情况下进⾏短作业的优先调度。
算法的简要说明:短作业(进程)优先调度算法SJ(P)F,是指对短作业或短进程优先调度的算法。
它们可以分别⽤于作业调度和进程调度。
短作业优先(SJF)的调度算法是从后备队列中选择⼀个或若⼲个估计运⾏时间最短的作业,将它们调⼊内存运⾏。
⽽短进程(SPF)调度算法则是从就绪队列中选出⼀个估计运⾏时间最短的进程,将处理机分配给它,使它⽴即执⾏并⼀直执⾏到完成,或发⽣某事件⽽被阻塞放弃处理机再重新调度。
操作系统——先来先服务(FCFS)和短作业优先(SJF)调度算法

进程号到达时刻服务时间(⼩时)A9:002B9:301C9:400.5D10:300.4
进程号到达时刻服务时间(⼩时)开始时间完成时间周转时间(⼩时)带权周转时间A9:00291121B9:30111122.52.5C9:400.51212:302.835.66D10:300.412:3012:542.46操作系统——先来先服务(FCFS)和短作业优先(SJF)调度算法例题: 计算在单CPU环境下,采⽤FCFS调度算法、SJF优先调度算法时的平均周转时间和平均带权周转时间,并指出它们的调度顺序。 公式: 周转时间 = 完成时间 - 到达时间 带权周转时间 = 周转时间 / 服务时间 平均周转时间 = 周转时间 / 进程数量 平均带权周转时间 = 带权周转时间 / 进程数量完成时间的计算⽅法不同,分别如下: 先来先服务(FCFS)调度算法:FCFS调度顺序:A、B、C、D(先来先服务)FCFS完成时间:A(完成时间)=A(到达时间)+A(服务时间)=9+2=11 B(完成时间)=A(完成时间)+B(服务时间)=11+1=12 C(完成时间)=B(完成时间)+C(服务时间) D(完成时间)=C(完成时间)+D(服务时间)(该进程完成时间 =上⼀进程的完成时间 + 这个进程的服务时间)单位要转化 进程号到达时刻服务时间(⼩时)开始时间完成时间周转时间(⼩时)带权周转时间A9:00291121B9:30111:5412:543.43.4C9:400.511:2411:542.44.8D10:300.41111:240.92.25平均周转时间:(2+2.5+2.38+2.4)/4=2.32平均带权周转时间:(1+2.5+5.66+6)/4=3.79 短作业优先(SJF)调度算法:SJF调度顺序:A、D、C、BSJF完成时间: A(完成时间)=A(到达时间)+A(服务时间) D(完成时间)=A(到达时间)+D(服务时间) C(完成时间)=D(到达时间)+C(服务时间) B(完成时间)=C(到达时间)+B(服务时间)
优先调度算法短作业(进程)

多级反馈队列调度算法的性能 (1)终端型作业用户。由于终端型作业用户所提交的 作业大多属于交互型作业,作业通常较小,系统只要能 使这些作业(进程)在第一队列所规定的时间片内完成, 便可使终端型作业用户都感到满意。 (2)短批处理作业用户。对于很短的批处理型作业, 开始时像终端型作业一样,如果仅在第一队列中执行一 个时间片即可完成,便可获得与终端型作业一样的响应 时间。对于稍长的作业,通常也只需在第二队列和第三 队列各执行一个时间片即可完成,其周转时间仍然较短。 (3)长批处理作业用户。对于长作业,它将依次在第 1,2,„,n个队列中运行,然后再按轮转方式运行,用 户不必担心其作业长期得不到处理。
简言之,该算法既照顾了短作业,又考虑了作业到 达的先后次序,不会使长作业长期得不到服务。因此, 该算法实现了一种较好的折衷。当然,在利用该算法时, 每要进行调度之前,都须先做响应比的计算,这会增加 系统开销。
基于时间片的轮转调度算法
时间片轮转法 1)基本原理 在早期的时间片轮转法中,系统将所有的就绪进程按 先来先服务的原则排成一个队列,每次调度时,把CPU分 配给队首进程,并令其执行一个时间片。时间片的大小 从几ms到几百ms。当执行的时间片用完时,由一个计时 器发出时钟中断请求,调度程序便据此信号来停止该进 程的执行,并将它送往就绪队列的末尾;然后,再把处 理机分配给就绪队列中新的队首进程,同时也让它执行 一个时间片。这样就可以保证就绪队列中的所有进程在 一给定的时间内均能获得一时间片的处理机执行时间。 换言之,系统能在给定的时间内响应所有用户的请求。
(3)仅当第一队列空闲时,调度程序才调度第二队列 中的进程运行;仅当第1~(i-1)队列均空时,才会调度 第i队列中的进程运行。如果处理机正在第i队列中为某 进程服务时,又有新进程进入优先权较高的队列(第1~ (i-1)中的任何一个队列),则此时新进程将抢占正在运 行进程的处理机,即由调度程序把正在运行的进程放回 到第i队列的末尾,把处理机分配给新到的高优先权进程。
最短寻道优先调度算法

最短作业优先调度算法
最短作业优先(Shortest Job First, SJF)调度算法同样也是顾名思义,它会优先选择运行时间最短的进程来运行,这有助于提高系统的吞吐量。
这显然对长作业不利,很容易造成一种极端现象。
比如,一个长作业在就绪队列等待运行,而这个就绪队列有非常多的短作业,那么就会使得长作业不断的往后推,周转时间变长,致使长作业长期不会被运行。
高响应比优先调度算法
前面的「先来先服务调度算法」和「最短作业优先调度算法」都没有很好的权衡短作业和长作业。
那么,高响应比优先(Highest Response Ratio Next, HRRN)调度算法主要是权衡了短作业和长作业。
每次进行进程调度时,先计算「响应比优先级」,然后把「响应比优先级」最高的进程投入运行,「响应比优先级」的计算公式:
从上面的公式,可以发现:
1.如果两个进程的「等待时间」相同时,「要求的服务时间」越短,「响应比」就越高,这样短作业的进程容易被选中运行;
2.如果两个进程「要求的服务时间」相同时,「等待时间」越长,「响应比」就越高,这就兼顾到了长作业进程,因为进程的响应比可以随时间等待的增加而提高,当其等待时间足够长时,其响应比便可以升到很高,从而获得运行的机会;。
操作系统实验_先来先服务的调度算法及短作业优先

操作系统实验_先来先服务的调度算法及短作业优先1.引言操作系统的调度算法是指在多进程环境中,操作系统为进程分配CPU 的顺序和策略。
先来先服务(FCFS)调度算法是最简单的调度算法之一,它按照进程到达的顺序为其分配CPU。
而短作业优先(SJF)调度算法是根据进程的执行时间来为其分配CPU,执行时间越短的进程越先执行。
本文将分别介绍FCFS调度算法和SJF调度算法,并对其进行评价和比较。
2.先来先服务(FCFS)调度算法2.1调度原理FCFS调度算法的原理非常简单,按照进程到达的顺序为其分配CPU。
当一个进程进入就绪队列后,如果CPU空闲,则立即为其分配CPU。
如果CPU正忙,则进程进入等待队列,等待CPU空闲后再分配。
在该算法中,进程的运行时间不考虑,只考虑进程到达的时间。
2.2优点与缺点FCFS调度算法的主要优点是实现简单,无需对进程的运行时间进行估计。
但FCFS算法存在一定的缺点。
首先,长作业在短作业前面等待的时间较长,可能导致长作业的响应时间过长。
其次,如果有一个进程出现阻塞或响应时间过长,其后面的进程也会受到影响,造成整个系统的性能下降。
3.短作业优先(SJF)调度算法3.1调度原理短作业优先(SJF)调度算法是根据进程的执行时间来为其分配CPU。
当一个进程进入就绪队列后,如果其执行时间比当前正在运行的进程短,则优先为该进程分配CPU。
如果当前没有运行的进程或者当前运行的进程执行完毕,则立即为该进程分配CPU。
在该算法中,进程的到达时间不考虑,只考虑进程的执行时间。
3.2优点与缺点SJF调度算法的主要优点是可以最大程度地减少平均等待时间,提高系统的吞吐量。
短作业可以快速执行完毕,从而让更多的作业得以执行。
但SJF算法存在一定的缺点。
首先,需要对进程的执行时间有一个准确的估计,对于实时系统或动态系统来说,估计执行时间可能会有一定的误差。
其次,在长作业激增的情况下,短作业可能会一直得不到CPU的分配,造成长时间的等待。
短作业优先算法

短作业(进程)优先调度算法之勘阻及广创作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 ].servicetime);}}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 ,zztime=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,dqzztime,N);Print(p,arrivetime,servicetime,starttime,finishtime ,zztime,dqzztime,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.心得体会课程设计结束了,在这次的课程设计中不但检验了我所学习的知识,也培养了我如何去做一件事情,又如何完成一件事情的能力。
短作业优先算法
短功课(进程)优先调度算法之杨若古兰创作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.心得体会课程设计结束了,在此次的课程设计中不但检验了我所进修的常识,也培养了我如何去做一件事情,又如何完成一件事情的能力.通过模拟进程的调度成绩,更加深了我对于操纵零碎理论的理解,在本人的动手操纵过程中,能够体会成功的喜悦和碰到成绩本人解决的能力,对于我来说是一次提高,让本人多多的在实践中可以加深对理论的理解,也让我明白了当前应当如何更好,更高效的进修,在当前,我会更加努力.。
操作系统实验_先来先服务的调度算法及短作业优先
操作系统实验_先来先服务的调度算法及短作业优先先来先服务调度算法是一种非抢占式的调度算法,它按照作业到达的先后顺序将作业分配给CPU。
具体来说,当一个作业进入就绪队列时,调度程序将把它放在队列的末尾,然后从队列的头部选择一个作业执行。
只有当一个作业执行完成后,作业队列的头部才会选择下一个作业执行。
先来先服务调度算法的优点是简单易实现,没有复杂的排序操作,适用于短作业和长作业混合的场景。
其缺点是没有考虑作业的执行时间,导致长作业会占用CPU很长时间,影响其他作业的响应时间。
短作业优先调度算法是一种抢占式的调度算法,它根据作业的执行时间选择优先级。
具体来说,当一个作业进入就绪队列时,调度程序会比较该作业的执行时间和其他就绪作业的执行时间,并选择执行时间最短的作业执行。
如果有一个新的作业到达,且其执行时间比当前执行的作业要短,那么调度程序会中断当前作业的执行并切换到新的作业执行。
短作业优先调度算法的优点是能够最大程度上减少作业的等待时间和响应时间,提高系统的吞吐量。
其缺点是需要对作业的执行时间有较准确的估计,否则可能导致长作业陷入饥饿状态。
此外,由于需要频繁进行作业的切换,短作业优先调度算法在实现上相对复杂。
在实际应用中,先来先服务调度算法适用于短作业和长作业混合的场景,或者作业的执行时间无法估计准确的情况下。
例如,在批处理系统中,作业的执行时间往往是固定的,先来先服务调度算法可以保证公平性,并且能够有效利用CPU资源。
而短作业优先调度算法适用于多任务环境下,作业的执行时间可以估计准确的情况下。
例如,在交互式系统中,用户的操作往往是短暂的,短作业优先调度算法可以最大限度地减少用户的等待时间,提高系统的响应速度。
总之,先来先服务调度算法和短作业优先调度算法是操作系统中常用的两种调度算法。
它们分别适用于不同的应用场景,在实际应用中可以根据具体需求选择不同的调度算法。
抢占式短作业优先例题
选择题在抢占式短作业优先调度算法中,当一个新作业到达时,如果它的执行时间比当前正在执行的作业短,那么: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. 它总是按照作业到达的顺序执行。
先来先服务和短作业优先调度算法
先来先服务调度算法和短作业优先调度算法
作业
提交 时间
运行 时间
开始 时间
1 8.00 2.00 8.00
1 8.00 2.00 8.00
2 8.50 0.50 10.00
2 8.50 0.50 10.30
3 9.00 0.10 10.50
3 9.00 0.10 10.00
4 9.50 0.20 10.60
可有效降低作业/进程的平均等待时间。 4
SJ(P)F缺点:
(1) 该算法对长作业不利,如作业C的周转时间由10增 至16,其带权周转时间由2增至3.1。更严重的是,如果有 一长作业(进程)进入系统的后备队列(就绪队列),由于调度 程序总是优先调度那些(即使是后进来的)短作业(进程),将 导致长作业(进程)长期不被调度。(不利长作业)
(2) 该算法完全未考虑作业的紧迫程度,因而不能保证 紧迫性作业(进程)会被及时处理。(不及时)
(3) 由于作业(进程)的长短只是根据用户所提供的估计 执行时间而定的,而用户又可能会有意或无意地缩短其作 业的估计运行时间,致使该算法不一定能真正做到短作业 优先调度。(不完全可靠)
5
调度算法练习题
6
4 9.50 0.20 10.10
先来先服务调度算法
平均周转时间
t = 1.725
平均带权周转时间 w = 6.875
完成 周转 带权周转 执行 时间 时间 时间 顺序
10.00 2.00
1
1
10.00 2.00
1
1
10.50 2.00
4
2
10.80 2.30 4.6
4
10.60 1.60 16
3
10.10 1.10 11
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
作业调度之最短作业优先算法5例题解析
例题一、某系统采用不能移动已在主存储器中作业的可变分区方式管理主存储器,现有供用户使用的主存空间100K,系统配有4台磁带机,有一批作业见下表:
作业序号进输入井时间要求计算时间需要主存容量申请磁带机数
110:0025分钟15K2台
210:2030分钟60K1台
310:3010分钟50K3台
410:3520分钟10K2台
510:4015分钟30K2台
按计算时间最短者优先算法如下表:
我的解释:系统首先装入1、2、4,但1结束时4沿未到达,因此先执行2;2执行完毕后,资源可以分配给3或5,考虑5的时间短优先分配5并执行,执行完5后,主存中只有4已就绪并等待执行,因此开始执行4,执行4的同时系统会将作业3装入主存,最后自然执行作业3;因此最后的顺序是:
1\2\5\4\3
作业序号进输入井时间进入主存时间开始计算时间结束计算时间周转时间解释
110:0010:1010:
00102525
此时输入井中只有一个作业且满足资源要求,因此被选中运行。
2102010:2010:
2510:5535
作业2到达输入井,满足资源要求,装入主存,等到作业1运行完毕进入运行。
510:4010:5510:
5511:1030
由于作业3要求主存空间无法满足,因此作业4先行一步装入主存,当作业2
让出处理器的同时,作业5满足资源要求进入主存就绪。
根据算法作业5先进入处理器运行
最后作业3装入主存并运行
平均周转时间:(25+35+30+55+70/5=43分钟 [分析]解答本题时应注意如下几个问题:
第一,系统采用的是多道程序设计技术,但没有限定并行工作的道数,因此, 只要当前尚未分配的资源可以满足在输入井中等待的某些作业的要求时,作业 调度可以按照给定的算法从中选择一个或多个作业装人主存储器;
第二,采用可变分区方式管理主存储器,但没给出主存空间的分配算法,因而,只要有合适的空间就可分配,题中还规定可用移动技术来合并分散的空闲区; 第三,对磁带机采用静态分配;
第四,进程调度采用可抢占的最高优先级调度算法,即对已被装人主存储器的作业而言优先级高的作业可抢占处理器执行;
第五,虽然作业需要使用磁带机,但题意中已提示忽略磁带机和调度所花的时问,所以,解题时不必考虑外围设备的启动二八D 中断等复杂情况,只需把它们当作纯计算型的作业; 第六,由于没有规定什么时候开始进行作业调度,故在一般情况下只要输入井中有等待处理的作业就可按选定的算法去选择满足必要条件的作业。
根据本题的要求列表分析如下:
10 30
10:35 1130 1030 1140
55
70
10: 11 35
30
11: 11
在10:3O时,作业(3)进人输入井,但因主存空闲空间虽然有40K却因被分成各为15K 和25K的两个区域而不能用来装人作业(3)。
当移动作业(2)后可把作业(3)装人主存储器,由于作业(3)的计算时间比作业(2)短,按规定的进程调度算法作业(3)可抢占处理器,致使作业(2)暂停运行。
当作业(3)结束时已有作业(4)和(5)在输人井等待处理,它们都满足作业调度的必要条件,但由于作业(5)的计算时间短于作业(4),故先把作业(5)装人主存储器。
现主存储器中有作业(2)和作业(5)两个作业,因作业(5)的优先级高于作业(2),故作业(2)的运行仍将被推迟。
当作业(5)结束后作业调度又可选作业(4)进人主存储器,同样地,作业(4)抢先于作业(2)运行。
可见,作业调度选中作业的次序为:(1)、(2)、(3)、(5)、(4),作业(2)是最后一个结束的作业且被移动过。
「题解](1)作业调度选中作业的次序依次为作业(1)、(2)、(3)、(5)、(4),最后一个执行结束的是作业(2)。
(2)为了把作业(3)装人主存储器而移动了作业(2)o
(3)每个作业的周转时间可列表于下:
五个作业的平均周转时间为:
(25+80+10+40+15)/5=170/5=34(分钟)
例题二、2005.4.42在一个多道程序系统,用户空间为100K,有四台打印机;采
用在主存的作业不能移动的可变分区方式管理主存。
主存空间采用最先适应分配
算法,静态分配打印机;对作业采用计算时间短的作业优先调度算法管理。
解析:首批装入JOB1\JOB2\JOB4,由于JOB1首先到达先执行它,执行完后的时间是9,JOB2和JOB4按时间短算法,先执行JOB2,JOB2执行完后,正在主存就绪等待的是:“JOB4和JOB5",再根据时间短算法我们优先执行JOB5,JOB5执行完后,正在主存就绪等待的是“JOB4和JOB3",再根据时间短算法我们优先执行JOB3,最后执行JOB4,因此最终的作业序列是:
“1-2-5-3-4”
例题三、2008.4.4&在一个多道程序系统,供用户使用的主存空间有100K,采
用计算时间短的作业优先算法。
今有如下所示的作业序列,它们的提交时间、运行时间和对主存需求的数量在下表中所列,当第一个作业进入系统后开始调度,假定作业都是仅作计算,请列出各个作业的开始时间、完成时间和周转时间。
注意:忽略系统开销。
作业进入输人井时间需计算时间主存需求开始时间完成时间 周转时间
1 8. 0时 0. 5小时 15K
2 8. 2时 0. 4小时 60K
3 8. 3时 0. 3小时 40K
4 8. 5时 0. 2
小时 10K 5
8
.
6时
0. 1小时
15
K
标准答案:JOB1\JOB2\JOB5\JOB3\JOB4
4Z 1分 2分 2分 2分 3分
标准答案:
作业 进入输人
需计算 进入主春 开始 完成 阐转
得分
界时间
附间
时间
时阊
时间
时间
3。
时
0.5小时 E 3 B.3 05 2 2 时
也4小时 E.2 38 12
1 2 3 81时
0.3小时 9.2 9.2 0.5 1.2 2 4 3.5时
0一2小
时
L5 8.5 &7
0.2 2 5
8方时 0」小时
E.6
3.7
8.8
0.2
2
说明:进入主存时间不需要列出.
解析:内存空间有100K,首先装入1\2\4\5,根据时间顺序优先执行1,执行完1之后的时间是8.5,此时按短时间算法应该先执行5,但5沿未到达,因此我优先执行4,执行完4之后的时间点是8.6;此时按短时间算法我们继续执行5,执行完5之后虽剩余内存可分配给3,但作业2早已在主存就绪等待,我们优先执行作业2,最后再执行作业3;因此最终的作业序列是:1-4-5-2-3
例题四、2010.4.51.一个多道程序系统,有一个作业序列,作业的提交时间及运
行时间在下表中所列。
当第一个作业进入系统后开始调度,假定作业都是仅作计算。
请列出在分别采用先来先服务算法和计算时间短的优先算法管理作业时各个作业的开始时间、完成时间和周转时间。
注意:忽略系统开销。
作业号到达输入井时刻需计算时间
110:002小时 210:101小时 310:200.5小时 410:300.2小时
解析:当第一个作业进入系统后开始调度,没有疑问作业1首先执行,本题由于不受主存空间的分配限制,因此相对简单,依次计算即可完成短时间算法的相应问题。
例题五、2010.7.51在一个多道程序系统,采用响应比高者优先调度算法管理作
业。
今有如下所示的作业序列,它们的提交时间及运行时间如下表中所列。
当第
一个作业进入系统后开始调度。
假定作业都是仅作计算。
请列出各个作业的开始时间、完成时间和周转时间。
注意:忽略系统开销。
标准答案:
解析:同例题四。