2.2.5 调度算法(二)

  在上一节中我们讲了三种调度算法,分别是先来先服务算法,短作业优先算法,高相应比优先算法,今天我们再来学习三种算法,分别是时间片轮转算法,优先级调度算法,多级反馈队列算法。

目录

2.2.5 调度算法(二)

         2.2.5.1 时间片轮转算法(RR, Round-Robin)

2.2.5.2 优先级调度算法

2.2.5.3 多级反馈调度算法

2.2.5.4 三种调度算法比较


 

2.2.5.1 时间片轮转算法(RR, Round-Robin)

  时间片轮转算法:按照各进程到达就绪队列的顺序,轮流让各个进程执行一个时间片(如 100ms)。若进程未在一个时间片内执行完,则剥夺处理机,将进程重新放到就绪队列队尾重新排队。我们需要注意的是时间片轮转算法应用的对象是进程,因为只有进程才会被分配时间片而作业并不会。时间片轮转算法是一种抢占式的算法,由时钟装置发出中断信号来通知CPU时间已到。

  有一组进程,如下图所示,请用时间片轮转算法给出进程的执行顺序,时间片分别设为2以及5 。 

 操作系统(十七)调度算法(二)

  时间片为2时,进程到达情况如下:

操作系统(十七)调度算法(二)

  0时刻:只有P1这一个进程所以P1上处理机运行。

  2时刻:P2到达,被存放在就绪队列的队头,刚好P1时间片完于是P1插入到队尾,P2上处理机运行。

  4时刻:P3到达,P2时间片用完被插入到P3之后,但此时队头中为P1,于是将P1上处理机运行。

  5时刻:P4到达,但是此时P1时间片还没完于是将P4插入到队尾

  6时刻:P1的时间片完,下处理机并插入到队尾,处于队头的P3进行调度。

  7时刻:虽然P3的时间片还没完但P3已经结束了运行,所以队头的P2发生调度

  9时刻:进程P2时间片用完,并刚好运行完,发生调度,P4上处理机
 
  11时刻P4时间片用完,重新回到就绪队列。P1上处理机
 
  12时刻P1运行完,主动放弃处理机,此时就绪队列中只剩P4P4上处理机
 
  14时刻:就绪队列为空,因此让P4接着运行一个时间片。
 
  16时刻:所有进程运行结束
 
上述过程的运行示意图如下:
  操作系统(十七)调度算法(二)
至于时间片大小为5时,情况与时间片大小为2类似,请大家自己分析,这里只贴出结果:
操作系统(十七)调度算法(二)
  这是大家可能会发现,时间片为5的轮转算法与先来先服务算法的调度情况是一致的,所以如果时间片划分过大那么时间片轮转算法就会退化为先来先服务算法;另一方面,如果时间片划分过小就会导致进程切换频繁,系统开销过大。

2.2.5.2 优先级调度算法

  优先级调度算法每个作业/进程有各自的优先级,调度时选择优先级最高的作业/进程。优先级调度算法既有抢占式又有非抢占式,总之一切都是根据优先级高低来决定的。

  在如图所示的进程中,我们规定优先数越大,优先级越高,分别用抢占式以及非抢占式给出调度顺序:

操作系统(十七)调度算法(二)

  非抢占式:(括号中是处于就绪队列中的进程)

  0时刻(P1):只有P1到达,P1上处理机。

  7时刻(P2P3P4):P1运行完成主动放弃处理机,其余进程都已到达,P3优先级最高,P3上处理机。
 
  8时刻( P2P4 ):P3完成,P2P4优先级相同,由于P2先到达,因此P2优先上处理机
 
  12时刻( P4):P2完成,就绪队列只剩P4P4上处理机。
 
  16时刻( ):P4完成,所有进程都结束

调度结果如下图所示:

操作系统(十七)调度算法(二)

抢占式:

0时刻(P1):只有P1到达,P1上处理机。

2时刻(P2):P2到达就绪队列,优先级比P1更高,发生抢占。P1回到就绪队列,P2上处理机。

4时刻(P1P3):P3到达,优先级比P2更高,P2回到就绪队列,P3抢占处理机。
 
5时刻(P1P2P4):P3完成,主动释放处理机,同时,P4也到达,由于P2P4更先进入就绪队列,因此选择P2上处理机
 
7时刻(P1P4):P2完成,就绪队列只剩P1P4P4上处理机。
 
11时刻(P1 ):P4完成,P1上处理机
 
16时刻():P1完成,所有进程均完成。
调度结果如下图所示:
操作系统(十七)调度算法(二)
  当然,优先级可以不是固定的,操作系统可以灵活的调整优先级让等待时间长的进程优先得到服务。

2.2.5.3 多级反馈调度算法

  多级反馈调度算法实际上是对以上各种算法的折中考虑,算法规则如下:

  • 设置多级就绪队列,各级队列优先级从高到低,时间片从小到大
  • 新进程到达时先进入第1级队列,按FCFS原则排队等待被分配时间片,若用完时间片进程还未结束,则进程进入下一级队列队尾。如果此时已经是在最下级的队列,则重新放回该队列队尾
  • 只有第 k 级队列为空时,才会为 k+1 级队头的进程分配时间片

多级反馈调度算法只适用于进程调度,且也有抢占式和非抢占式两种:抢占式的算法。在 k 级队列的进程运行过程中,若更上级的队列(1~k-1级)中进入了一个新进程,则由于新进程处于优先级更高的队列中,因此新进程会抢占处理机,原来运行的进程放回 k 级队列队尾。

  对于以下进程,我们采用抢占式的多级反馈进程调度算法来进行进程调度:(这个过程实在是太难弄了.....我想弄成GIF但失败了)

调度的顺序为P1(1) —> P2(1) —> P1(2)—> P2(1)—> P3(1)—> P2(2)—> P1(4) —> P1(1)(括号中为运行的时间片长度)。

2.2.5.4 三种调度算法比较

算法 抢占? 优点 缺点 饥饿? 补充
时间片轮转
抢占
公平,适用于分时系统
频繁切换有开销,不区分优先级
不会 时间片大小设计的影响
优先级调度
非抢占与抢占均可
区分优先级,适用于实时系统
可能导致饥饿
动态优先级设置
多级反馈队列
抢占 都是优点    

相关文章:

  • 2021-07-24
  • 2021-04-27
  • 2022-02-02
  • 2021-10-24
  • 2021-08-25
  • 2022-12-23
猜你喜欢
  • 2021-12-20
  • 2022-01-19
  • 2021-07-14
  • 2022-12-23
  • 2021-12-05
  • 2021-08-22
相关资源
相似解决方案