Ben*_*oit 12 computer-science operating-system scheduler
在多任务操作系统环境中,有时您会听到术语循环调度.它指的是什么?
那还有什么其他的安排?
时间安排是实践中任何循环调度系统固有的,AFAIK.
我不同意InSciTek Jeff的暗示,以下是循环调度:
也就是说,可以允许循环旋转中具有相同优先级的每个任务运行,直到它们在轮换到轮换中的下一个任务之前达到资源阻塞条件.
我不知道如何将其视为循环法.这实际上是抢占式调度.但是,可以使用具有循环和抢占调度元素的调度算法,如果启用了循环调度和抢占,则VxWorks会执行该调度算法(默认情况下禁用循环法).启用循环调度的方法是在kernelTimeSlice中提供非零值.
我同意这个说法:
因此,虽然基于时间的调度意味着循环调度,但是循环调度不需要基于时间的相等时间.
你是对的,它不需要相同的时间.抢占可以扼杀它.实际上在VxWorks中,如果任务在循环调度期间被抢占,则当任务再次获得控制时,它将在其分配的剩余时间内执行.
编辑针对InSciTek Jeff(我没有评论权限)是的,我指的是任务锁定/中断禁用,虽然我显然没有表达得那么好.你的第二条评论是先发制人(哈!).我希望能够讨论一个更为突出的观点,即你认为循环调度可以在没有时间切片的情况下存在.或者你的意思是基于时间相等的时间切片?我不同意前者,但同意后者.我渴望学习.谢谢.
Edit2针对杰夫:
循环可以没有时间限制地存在.这正是在禁用kernelTimeSlice(零)时VxWorks中发生的情况.
我不同意这个说法.请参阅本文档第2.2.3节,标题为Round-Robin Scheduling.
循环调度使用时间分片来实现CPU对具有相同优先级的所有任务的公平分配.在具有相同优先级的一组任务中的每个任务执行定义的间隔或时间片.通过调用kernelTimeSlice()来启用循环调度,该函数采用时间片或时间间隔的参数.[...]如果启用了循环调度,并且为执行任务启用了抢占,则系统节拍处理程序会增加任务的时间片计数.
时间周期是循环调度中固有的.否则,您依赖的任务是放弃CPU控制,循环调度旨在解决.