循环调度算法示例

⚡ 智能摘要

轮询调度是最古老、最简单的抢占式 CPU 算法,其中每个就绪进程在循环队列中运行固定的时间片,从而确保多任务处理的公平、无饥饿执行。

  • 🔄 定义: 每个准备就绪的任务依次运行一段固定的时间。
  • ⏱️ 时间量子: CPU 会在固定的时间间隔(时间片)后切换进程。
  • 公平: 每个进程都获得相同的 CPU 时间,避免了资源匮乏。
  • 🧮 先发制人: 被抢占的进程会移到队列末尾。
  • 优点: 公平分配,无护航效应,响应时间可预测。
  • ⚠️ 缺点: 性能取决于时间片,并且会增加上下文切换开销。

循环调度算法

什么是循环调度?

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

在轮询调度算法中,每个就绪任务依次在循环队列中运行,且每次运行的时间片都是有限的。该算法还能确保进程执行过程中不会出现饥饿现象。

循环调度的特点

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

  • 轮询算法是一种抢占式算法。
  • CPU 会在经过一段固定的时间间隔后切换到下一个进程,这段时间间隔称为时间片/时间片。
  • 被抢占的进程被添加到队列末尾。
  • 循环赛是一种由时钟驱动的混合模型。
  • 时间片应尽可能小,并分配给需要处理的特定任务。但是,不同操作系统的时间片可能有所不同。
  • 它是一种实时算法,能够在特定的时间限制内对事件做出响应。
  • 循环赛制是最古老、最公平、最简单的算法之一。
  • 它是传统操作系统中广泛使用的一种调度方法。

循环调度示例

请考虑以下三个过程:

进程队列 爆发时间
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) 让我们来计算一下上述例子的平均等待时间。

Wait time
P1 = 0 + 4 = 4
P2 = 2 + 4 = 6
P3 = 4 + 3 = 7

循环调度法的优势

以下是轮询调度方法的优点/益处:

  • 它不会面临饥荒或护航效应的问题。
  • 所有作业都获得公平的 CPU 分配。
  • 它处理所有流程,不设优先级。
  • 如果您知道运行队列中的进程总数,那么您还可以假设同一进程的最坏情况响应时间。
  • 这种调度方法不依赖于运行时间,因此很容易在系统中实现。
  • 一旦某个进程在特定时间段内执行完毕,该进程就会被抢占,而另一个进程则会在给定的时间段内执行。
  • 允许操作系统使用上下文切换方法来保存被抢占进程的状态。
  • 就平均响应时间而言,它提供了最佳的性能。

循环调度的缺点

以下是使用轮询调度算法的缺点/不足之处:

  • 如果操作系统的切片时间较短,则处理器输出会降低。
  • 这种方法会花费更多时间在上下文切换上。
  • 其性能很大程度上取决于时间量。
  • 无法为进程设置优先级。
  • 轮询调度不会优先处理更重要的任务。
  • 它会降低理解能力。
  • 时间片越小,系统上下文切换开销就越大。
  • 在这个系统中,找到正确的时间量子是一项相当困难的任务。

最坏情况延迟

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

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

分子式:

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

常见问题

时间片,或称时间片,是指每个进程在被抢占之前运行的固定 CPU 时间。时间片过大会类似于先来先服务 (FCFS) 机制;时间片过小则会增加大量的上下文切换开销。

先来先服务(FCFS)按到达顺序运行每个进程直至完成,并且是非抢占式的。轮询调度(Round Robin)是抢占式的:它为每个进程分配固定的时间片,并循环处理队列中的进程,从而提高响应速度并防止耗时作业阻塞其他进程。

因为每个进程都被放入一个循环队列中,并依次获得固定的时间片。没有进程会被跳过或无限期延迟,所以每个进程最终都会获得 CPU 时间,无论其运行时间长短或到达顺序如何。

人工智能和机器学习能够预测进程行为和工作负载模式,从而实时调整调度决策。系统不再采用固定策略,而是可以动态调整优先级和时间片,进而提高 CPU 利用率、吞吐量和响应速度。

是的。人工智能模型可以分析过去的执行时间和系统负载,从而建议一个最佳时间片,并根据情况变化进行调整。与单一固定值相比,这种方法能更好地平衡上下文切换开销和响应时间。

总结一下这篇文章: