什么是循环调度?
该算法的名称来自循环原则,即每个人轮流获得相等份额的东西。它是最古老,最简单的调度算法,主要用于多任务处理。
在循环调度中,每个准备好的任务仅在有限时间段内的循环队列中轮流运行。该算法还提供无饥饿的进程执行。
轮循调度的特点
以下是循环调度的重要特征:
- 轮询是一种优先算法
- 在固定的间隔时间(称为时间量/时间片)之后,CPU移至下一个进程。
- 被抢占的进程将添加到队列的末尾。
- 轮询是一种由时钟驱动的混合模型
- 时间片应该是最小的,它是为需要处理的特定任务分配的。但是,它可能与OS不同。
- 这是一种实时算法,可以在特定时限内响应事件。
- 轮询是最古老,最公平和最简单的算法之一。
- 在传统OS中广泛使用的调度方法。
循环调度的示例
考虑以下三个过程
处理队列 | 爆发时间 |
---|---|
P1 | 4 |
P2 | 3 |
P3 | 5 |
步骤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中最古老,最公平,最简单的算法之一,也是广泛使用的调度方法。
- 轮询是一种优先算法
- 循环调度方法的最大优点是,如果您知道运行队列上的进程总数,那么您还可以假定同一进程的最坏情况响应时间。
- 此方法在上下文切换上花费了更多时间
- 最坏情况下的延迟是用于执行所有任务所花费的最长时间的术语。