什么是循环调度?

时间:2008-09-17 02:43:35

标签: operating-system computer-science scheduler

在多任务操作系统环境中,有时您会听到术语循环调度。它是指什么?
还有什么其他的安排?

7 个答案:

答案 0 :(得分:20)

循环赛程安排

如果您是100位客人的聚会主持人,循环计划意味着您每位客人花费1分钟(固定金额)。您将逐个浏览每位客人,100分钟后,您将与每位客人共度1分钟。更多关于Wikipedia

还有许多其他类型的日程安排,例如基于优先级(即首先是最重要的人),先到先得,最早的截止日期(即最早离开的人),等等。你可以开始通过谷歌搜索调度算法或查看scheduling at Wikipedia

答案 1 :(得分:7)

时间安排是实践中任何循环调度系统固有的,AFAIK。

我不同意InSciTek Jeff的暗示下面的循环调度:

  

也就是说,循环旋转中具有相同优先级的每个任务都可以允许运行,直到它们在轮换到轮换中的下一个任务之前达到资源阻塞条件。

我不知道如何将其视为循环法。这实际上是抢占式调度。但是,可以使用具有循环和抢占调度元素的调度算法,如果启用了循环调度和抢占,则VxWorks会执行该调度算法(默认情况下禁用循环法)。启用循环调度的方法是在 kernelTimeSlice 中提供非零值。

我同意这句话:

  

因此,虽然基于时间的调度意味着循环调度,但循环调度不需要基于时间的相等时间。

你是对的,它不需要相等的时间。抢占可以扼杀它。实际上在VxWorks中,如果任务在循环调度期间被抢占,则当任务再次获得控制时,它将在其分配的剩余时间内执行。

编辑针对InSciTek Jeff(我没有评论权限) 是的,我指的是任务锁定/中断禁用,虽然我显然没有表达得那么好。你的第二条评论是先发制人(哈!)。我希望能够讨论一个更为突出的观点,即你认为循环调度可以在没有时间切片的情况下存在。或者你的意思是基于时间相等的时间切片?我不同意前者,但同意后者。我渴望学习。感谢。

Edit2针对杰夫:

  

循环可以在没有时间限制的情况下存在。这正是在禁用kernelTimeSlice(零)时VxWorks中发生的情况。

我不同意这个说法。请参阅this document第2.2.3节,标题为Round-Robin Scheduling。

  

循环调度使用时间   切片实现公平分配   CPU与所有任务相同   优先。每个任务,在一组中   执行具有相同优先级的任务   对于定义的间隔或时间片。   循环调度由启用   调用kernelTimeSlice(),其中   获取时间片的参数,或   间隔。 [...]如果是循环赛   调度已启用,并且已抢占   为执行任务启用了   系统刻度处理程序递增   任务的时间片数。

循环调度是循环调度所固有的。否则,您依靠任务来放弃CPU控制,循环调度旨在解决。

答案 2 :(得分:3)

这里的答案甚至维基百科的文章都描述了循环调度本身就包括周期性的时间限制。虽然这很常见,但我认为Round-Robin调度和时间序列 完全相同。当然,对于有意义的时间限制,在旋转到每个任务时会隐含循环调度,但是您可以进行循环调度而无需进行时间调整。也就是说,可以允许在循环轮换中具有相同优先级的每个任务运行,直到它们达到资源块条件并且仅在旋转运行中具有下一个任务。换句话说,当存在相同优先级的任务时,重新安排的点是 时间先发制人。

上述想法实际上是在Wind River的VxWorks内核的情况下实现的。在其优先级方案中,每个优先级的任务都循环运行,但如果没有在内核中专门启用该功能,则不会进行时间片。这种灵活性的原因是为了避免在一个有限时间内已经知道在块中进行时间分割的开销。

因此,虽然基于时间的调度意味着循环调度,但循环调度不需要基于时间的相等时间。

答案 3 :(得分:1)

意见。似乎我们将两种机制交织在一起。假设只有OP的原始断言“在多任务操作系统上下文中”那么

1 - 循环调度程序始终调度循环队列中的下一个项目。

2 - 调度程序如何重新获得控制以执行调度是独立且无关的。

我并不反对最普遍的2方法是时间切片/产量等待资源,但正如已经注意到的还有其他方法。如果我没有弄错,第一台Mac没有使用时间切片,他们使用自愿产量/产量等待资源(20年以上的脑细胞有时会出错;)。

答案 4 :(得分:0)

循环法是一种简单的调度算法,其中时间在没有优先权的作业之间平均分配。

例如 - 如果您正在运行5个进程 - 在允许另一个进程运行之前,每个进程将允许运行1/5个单位时间。循环法通常很容易在操作系统中实现。

答案 5 :(得分:0)

实际上,你对先发制人的调度和循环赛感到困惑。事实上,RR是抢占式调度的一部分。

答案 6 :(得分:0)

循环调度基于时间共享,也称为量子(CPU一次性给予任何进程的最大时间)。在队列中有多个进程(需要不同的时间来完成aka突发时间),并且CPU必须全部处理它们,以便它在进程之间保持切换,以便根据量子值为每个进程提供相等的时间。这种类型的调度称为循环调度。 查看此简单视频,即可轻松了解循环计划:https://www.youtube.com/watch?v=9hw-_qJ55K4