轮循调度算法实例

什么是循环调度?

该算法的名称来自循环原则,即每个人轮流获得相等份额的东西。它是最古老,最简单的调度算法,主要用于多任务处理。

在循环调度中,每个准备好的任务仅在有限时间段内的循环队列中轮流运行。该算法还提供无饥饿的进程执行。

轮循调度的特点

以下是循环调度的重要特征:

  • 轮询是一种优先算法
  • 在固定的间隔时间(称为时间量/时间片)之后,CPU移至下一个进程。
  • 被抢占的进程将添加到队列的末尾。
  • 轮询是一种由时钟驱动的混合模型
  • 时间片应该是最小的,它是为需要处理的特定任务分配的。但是,它可能与OS不同。
  • 这是一种实时算法,可以在特定时限内响应事件。
  • 轮询是最古老,最公平和最简单的算法之一。
  • 在传统OS中广泛使用的调度方法。

循环调度的示例

考虑以下三个过程

处理队列爆发时间
P14
P23
P35

步骤1)从进程P1开始执行,该进程的突发时间为4。这里,每个进程执行2秒钟。P2和P3仍在等待队列中。

步骤2)在时间= 2,P1被添加到队列的末尾,P2开始执行

步骤3)在时间= 4,P2被抢占并在队列末尾添加。P3开始执行。

步骤4)在时间= 6时,P3被抢占并在队列末尾添加。P1开始执行。

步骤5)在时间= 8时,P1的突发时间为4。它已完成执行。P2开始执行

步骤6) P2的突发时间为3。它已经执行了2个间隔。在时间= 9时,P2完成执行。然后,P3开始执行直到完成。

步骤7)让我们计算以上示例的平均等待时间。

等待时间 
P1 = 0+ 4 = 4
P2 = 2 + 4 = 6
P3 = 4 + 3 = 7

循环调度的优势

这是循环调度方法的优点/好处:

  • 它没有面临饥饿或车队效应的问题。
  • 所有作业均获得公平的CPU分配。
  • 它处理所有过程而没有任何优先级
  • 如果您知道运行队列上的进程总数,那么您还可以假定同一进程的最坏情况响应时间。
  • 此调度方法不依赖于突发时间。这就是为什么它很容易在系统上实现的原因。
  • 在特定时间段内执行某个过程后,该进程将被抢占,而另一个进程将在该给定时间段内执行。
  • 允许OS使用上下文切换方法保存抢占进程的状态。
  • 就平均响应时间而言,它可提供最佳性能。

循环调度的缺点

以下是使用循环调度的缺点/缺点:

  • 如果OS的切片时间很短,则处理器输出将减少。
  • 此方法在上下文切换上花费了更多时间
  • 其性能在很大程度上取决于时间量。
  • 无法为进程设置优先级。
  • 轮循调度不会将更重要的任务放在优先位置。
  • 降低理解力
  • 时间量越短,系统中上下文切换开销就越高。
  • 在该系统中,找到正确的时间量是一项非常困难的任务。

最坏情况的延迟

该术语用于执行所有任务所需的最长时间。

  • dt =表示将任务放入列表时的检测时间
  • st =表示从一个任务切换到另一个任务的时间
  • et =表示任务执行时间

公式:

Tworst = {(dti+ sti + eti ), + (dti+ sti + eti )2 +...+ (dti+ sti + eti )N., + (dti+ sti + eti  + eti) N} + tISR    
t,SR = sum of all execution times

概要:

  • 该算法的名称来自循环原则,即每个人轮流获得相等份额的东西。
  • 轮询是传统OS中最古老,最公平,最简单的算法之一,也是广泛使用的调度方法。
  • 轮询是一种优先算法
  • 循环调度方法的最大优点是,如果您知道运行队列上的进程总数,那么您还可以假定同一进程的最坏情况响应时间。
  • 此方法在上下文切换上花费了更多时间
  • 最坏情况下的延迟是用于执行所有任务所花费的最长时间的术语。

觉得文章有用?

点个广告表达一下你的爱意吧 !😁