1. FSFS ,SJF ,HRN算法实例
1、设在单道批处理系统中有四道作业,它们提交的时刻及运行时间如下:
作业号 提交时刻(h) 运行时间(h)
1 8.0 1.0
2 8.5 0.5
3 9.0 0.2
4 9.1 0.1
请分别给出在算法FCFS、SJF和HRN中这组作业的调度顺序、平周转时间和平均带权周转时间。
【解答】
FCFS算法调度顺序:1,2,3,4,作业运行情况如下表
作业号 开始时间 完成时间 周转时间 带权周转时间
1 8.0 9.0 1.0 1.0
2 9.0 9.5 1.0 2.0
3 9.5 9.7 0.7 3.5
4 9.7 9.8 0.7 7.0
平均周转时间T=(1.0+1.0+0.7+0.7)/4=0.85
平均带权周转时间W=(1.0+2.0+3.5+7.0)/4=3.375
SJF算法调度顺序:1,3,4,2,作业运行情况如下表
作业号 开始时间 完成时间 周转时间 带权周转时间
1 8.0 9.0 1.0 1.0
2 9.3 9.8 1.3 2.6
3 9.0 9.2 0.2 1.0
4 9.2 9.3 0.2 2.0
平均周转时间T=(1.0+1.3+0.2+0.2)/4=0.675
平均带权周转时间W=(1.0+2.6+1.0+2.0)/4=1.65
HRN算法调度顺序:1,2,4,3,作业运行情况如下表
作业号 开始时间 完成时间 周转时间 带权周转时间
1 8.0 9.0 1.0 1.0
2 9.0 9.5 1.0 2.0
3 9.6 9.8 0.8 4.0
4 9.5 9.6 0.5 5.0
平均周转时间T=(1.0+1.0+0.8+0.5)/4=0.825
平均带权周转时间W=(1.0+2.0+4.0+5.0)/4=3.0
2. 以下五个作业,fcfs sjf hrrn三种调度算法平均周转时间,高响应比怎么算
作业调度算法 .
先来先服务(FCFS, First Come First Serve)是最简单的调度算法,按先后顺序进行调度。
定义:
按照作业提交或进程变为就绪状态的先后次序,分派CPU;
当前作业或进程占用CPU,直到执行完或阻塞,才出让CPU(非抢占方式)。
在作业或进程唤醒后(如I/O完成),并不立即恢复执行,通常等到当前作业或进程出让CPU。
适用场景:
比较有利于长作业,而不利于短作业。因为长作业会长时间占据处理机。
有利于CPU繁忙的作业,而不利于I/O繁忙的作业。
算法实现原理图:
2. 轮转法(Round Robin)
轮转法是让每个进程在就绪队列中的等待时间与享受服务的时间成正比例。
定义:
将系统中所有的就绪进程按照FCFS原则,排成一个队列。
每次调度时将CPU分派给队首进程,让其执行一个时间片。时间片的长度从几个ms到几百ms。
在一个时间片结束时,发生时钟中断。
调度程序据此暂停当前进程的执行,将其送到就绪队列的末尾,并通过上下文切换执行当前的队首进程。
进程可以未使用完一个时间片,就出让CPU(如阻塞)。
时间片长度的确定:
时间片长度变化的影响
过长->退化为FCFS算法,进程在一个时间片内都执行完,响应时间长。
过短->用户的一次请求需要多个时间片才能处理完,上下文切换次数增加,响应时间长。
对响应时间的要求:T(响应时间)=N(进程数目)*q(时间片)
就绪进程的数目:数目越多,时间片越小
系统的处理能力:应当使用户输入通常在一个时间片内能处理完,否则使响应时间,平均周转时间和平均带权周转时间延长。
算法实现原理图:
3. 多级反馈队列算法(Round Robin with Multiple Feedback)
多级反馈队列算法是轮转算法和优先级算法的综合和发展。
定义:
设置多个就绪队列,分别赋予不同的优先级,如逐级降低,队列1的优先级最高。每个队列执行时间片的长度也不同,规定优先级越低则时间片越长,如逐级加倍。
新进程进入内存后,先投入队列1的末尾,按FCFS算法调度;若按队列1一个时间片未能执行完,则降低投入到队列2的末尾,同样按FCFS算法调度;如此下去,降低到最后的队列,则按“时间片轮转”算法调度直到完成。
仅当较高优先级的队列为空,才调度较低优先级的队列中的进程执行。如果进程执行时有新进程进入较高优先级的队列,则抢先执行新进程,并把被抢先的进程投入原队列的末尾。
优点:
为提高系统吞吐量和缩短平均周转时间而照顾短进程。
为获得较好的I/O设备利用率和缩短响应时间而照顾I/O型进程。
不必估计进程的执行时间,动态调节
几点说明:
I/O型进程:让其进入最高优先级队列,以及时响应I/O交互。通常执行一个小时间片,要求可处理完一次I/O请求的数据,然后转入到阻塞队列。
计算型进程:每次都执行完时间片,进入更低级队列。最终采用最大时间片来执行,减少调度次数。
I/O次数不多,而主要是CPU处理的进程。在I/O完成后,放回优先I/O请求时离开的队列,以免每次都回到最高优先级队列后再逐次下降。
为适应一个进程在不同时间段的运行特点,I/O完成时,提高优先级;时间片用完时,降低优先级。
算法实现原理图:
4. 优先级法(Priority Scheling)
优先级算法是多级队列算法的改进,平衡各进程对响应时间的要求。适用于作业调度和进程调度,可分成抢先式和非抢先式。
静态优先级:
作业调度中的静态优先级大多按以下原则确定:
由用户自己根据作业的紧急程度输入一个适当的优先级。
由系统或操作员根据作业类型指定优先级。
系统根据作业要求资源情况确定优先级。
进程的静态优先级的确定原则:
按进程的类型给予不同的优先级。
将作业的情态优先级作为它所属进程的优先级。
动态优先级:
进程的动态优先级一般根据以下原则确定:
根据进程占用有CPU时间的长短来决定。
根据就绪进程等待CPU的时间长短来决定。
5.短作业优先法(SJF, Shortest Job First)
短作业优先又称为“短进程优先”SPN(Shortest Process Next);这是对FCFS算法的改进,其目标是减少平均周转时间。
定义:
对预计执行时间短的作业(进程)优先分派处理机。通常后来的短作业不抢先正在执行的作业。
SJF的特点:
(1) 优点:
比FCFS改善平均周转时间和平均带权周转时间,缩短作业的等待时间;
提高系统的吞吐量;
(2) 缺点:
对长作业非常不利,可能长时间得不到执行;
未能依据作业的紧迫程度来划分执行的优先级;
难以准确估计作业(进程)的执行时间,从而影响调度性能。
SJF的变型:
“最短剩余时间优先”SRT(Shortest Remaining Time)(允许比当前进程剩余时间更短的进程来抢占)
“最高响应比优先”HRRN(Highest Response Ratio Next)(响应比R = (等待时间 + 要求执行时间) / 要求执行时间,是FCFS和SJF的折衷)
6. 最高响应比优先法(HRN,Highest Response_ratio Next)
最高响应比优先法是对FCFS方式和SJF方式的一种综合平衡。FCFS方式只考虑每个作业的等待时间而未考虑执行时间的长短,而SJF方式只考虑执行时间而未考虑等待时间的长短。因此,这两种调度算法在某些极端情况下会带来某些不便。HRN调度策略同时考虑每个作业的等待时间长短和估计需要的执行时间长短,从中选出响应比最高的作业投入执行。
响应比R定义如下: R =(W+T)/T = 1+W/T
其中T为该作业估计需要的执行时间,W为作业在后备状态队列中的等待时间。每当要进行作业调度时,系统计算每个作业的响应比,选择其中R最大者投入执行。这样,即使是长作业,随着它等待时间的增加,W / T也就随着增加,也就有机会获得调度执行。这种算法是介于FCFS和SJF之间的一种折中算法。由于长作业也有机会投入运行,在同一时间内处理的作业数显然要少于SJF法,从而采用HRN方式时其吞吐量将小于采用SJF 法时的吞吐量。另外,由于每次调度前要计算响应比,系统开销也要相应增加。
3. 利用短作业优先算法(SJF),计算进程的周转时间和带权周转时间。非常着急!!
周转时间=进程结束的时间 - 进程到达的时间;
带权周转时间=周转时间 / 执行时间;
如:A作业2:30到达,3:30结束,需要执行40分钟。
周转时间=3:30-2:30=60分钟
带权周转时间=60分钟/40分钟=1.5
4. SJF是什么意思
是网络上的一个梗,指stg界最高毒奶。
SJF指射击游戏(Shooting game),游戏类型的一种,也是动作游戏的一种。射击游戏带有很明显的动作游戏特点,也没有纯然的射击游戏,因为射击必须要经过一种动作方式来呈现它的“射击”。
“毒奶”指反向加油、拖累队友。
详解:
奶,在电竞中作为名词时候,指使用于游戏治疗辅助职业;在电竞中作为动词时即指治疗的动作。
毒奶,顾名思义,有毒的奶,即起到治疗的反作用,害死队友的行为。
5. SJF什么意思
最短作业优先算法SJF SJF(Shortest Job First ) SJF算法以进入系统的作业所要求的CPU时间为标准,总选取估计计算时间最短的作业投入运行。 SJF算法的优缺点: 算法易于实现。但效率不高,主要弱点是忽视了作业等待时间;会出现饥饿现象。 SJF算法与FCFS算法的比较: SJF的平均作业周转时间比FCFS要小,故它的调度性能比FCFS好。 SJF调度算法的问题: 实现SJF调度算法需要知道作业所需运行时间,否则调度就没有依据,要精确知道一个作业的运行时间是办不到的。
6. 进程调度算法
FCFS调度算法属于不可剥夺算法。从表面上看,它对所有作业都是公平的,但若一个长作业先到达系统,就会使后面许多短作业等待很长时间,因此它不能作为分时系统和实时系统的主要调度策略。但它常被结合在其他调度策略中使用。例如,在使用优先级作为调度策略的系统中,往往对多个具有相同优先级的进程按FCFS原则处理。
FCFS调度算法的特点是算法简单,但效率低; 对长作业比较有利,但对短作业不利(相对SJF和高响应比);
FCFS调度算法有利于CPU繁忙型作业,而不利于I/O繁忙型作业。
短作业优先调度算法是一个非抢占策略,他的原则是下一次选择预计处理时间最短的进程,因此短进程将会越过长作业,跳至队列头。该算法即可用于作业调度,也可用于进程调度。 但是他对长作业不利,不能保证紧迫性作业(进程)被及时处理,作业的长短只是被估算出来的。
缺点:
该算法对长作业不利,SJF调度算法中长作业的周转时间会增加。更严重的是,如果有一长作业进入系统的后备队列,由于调度程序总是优先调度那些 (即使是后进来的)短作业,将导致长作业长期不被调度(“饥饿”现象,注意区分“死锁”。后者是系统环形等待,前者是调度策略问题)。
该算法完全未考虑作业的紧迫程度,因而不能保证紧迫性作业会被及时处理。
由于作业的长短只是根据用户所提供的估计执行时间而定的,而用户又可能会有意或无意地缩短其作业的估计运行时间,致使该算法不一定能真正做到短作业优先调度。
SJF调度算法的平均等待时间、平均周转时间最少。
高响应比优先调度算法既考虑作业的执行时间也考虑作业的等待时间,综合了先来先服务和最短作业优先两种算法的特点。
该算法中的响应比是指作业等待时间与运行比值,响应比公式定义如下:
响应比 =(等待时间+要求服务时间)/ 要求服务时间,即RR=(w+s)/s=1+w/s,因此 响应比一定是大于等于1的。
短作业与先后次序的兼顾,且不会使长作业长期得不到服务。
响应比计算系统开销,增加系统开销。
高响应比优先调度算法适合批处理系统,主要用于作业调度。
为了实现 RR 调度,我们将就绪队列视为进程的 FIFO 队列。新进程添加到就绪队列的尾部。CPU 调度程序从就绪队列中选择第一个进程,将定时器设置在一个时间片后中断,最后分派这个进程。
接下来,有两种情况可能发生。进程可能只需少于时间片的 CPU 执行。对于这种情况,进程本身会自动释放 CPU。调度程序接着处理就绪队列的下一个进程。否则,如果当前运行进程的 CPU 执行大于一个时间片,那么定时器会中断,进而中断操作系统。然后,进行上下文切换,再将进程加到就绪队列的尾部,接着 CPU 调度程序会选择就绪队列内的下一个进程。
采用 RR 策略的平均等待时间通常较长。
在 RR 调度算法中,没有进程被连续分配超过一个时间片的 CPU(除非它是唯一可运行的进程)。如果进程的 CPU 执行超过一个时间片,那么该进程会被抢占,并被放回到就绪队列。因此, RR调度算法是抢占的。
算法描述
1、进程在进入待调度的队列等待时,首先进入优先级最高的Q1等待。
2、首先调度优先级高的队列中的进程。若高优先级中队列中已没有调度的进程,则调度次优先级队列中的进程。例如:Q1,Q2,Q3三个队列,当且仅当在Q1中没有进程等待时才去调度Q2,同理,只有Q1,Q2都为空时才会去调度Q3。
3、对于同一个队列中的各个进程,按照FCFS分配时间片调度。比如Q1队列的时间片为N,那么Q1中的作业在经历了N个时间片后若还没有完成,则进入Q2队列等待,若Q2的时间片用完后作业还不能完成,一直进入下一级队列,直至完成。
4、在最后一个队列QN中的各个进程,按照时间片轮转分配时间片调度。
5、在低优先级的队列中的进程在运行时,又有新到达的作业,此时须立即把正在运行的进程放回当前队列的队尾,然后把处理机分给高优先级进程。换而言之,任何时刻,只有当第1~i-1队列全部为空时,才会去执行第i队列的进程(抢占式)。特别说明,当再度运行到当前队列的该进程时,仅分配上次还未完成的时间片,不再分配该队列对应的完整时间片。
7. 跪求操作系统帝!!关于一个SJF算法的问题!!
非抢占式SJF算法
0时刻A执行,3个时间,周转时间3.
3时刻B等了1个时间,而C还没到执行B,6个时间,到达时间按9,周转时间7.
9时刻CDE都到了等待。E的工作时间最短,执行E,2个时间到达11,周转时间3.
11时刻CD在等待。C需求时间短,C执行,4个时间,到达15,周转时间11.
15时刻D执行,5个时间,到达20整个完成,周转时间是14.
平均周转时间=(3+7+3+11+14)/5=7.6
带权平均周转时间=(3/3+7/6+3/2+11/4+14/5)/5=1.84