任务计划程序
与一些同事就有关实时任务的最佳调度策略进行了有趣的讨论,但并非每个人都对常见或有用的调度策略有了很好的理解。
为了您的答案,请选择一种策略,并稍微详细一点,而不是对几种策略稍作介绍。 如果你有一些东西要添加到别人的描述中,并且很短,可以添加一条评论而不是一个新的答案(如果它很长或很有用,或者只是一个更好的描述,那么请使用一个答案)
目前的战略:
-亚当
正如一篇名为“节能感知嵌入式系统的实时任务调度”的文章中所述,Swaminathan和Chakrabarty描述了低功耗(嵌入式)设备中实时任务调度的挑战,该设备具有多处理器速度和可用的功耗配置文件。 他们提出的调度算法(并且显示比测试中的最佳解决方案仅差1%)具有调度他们称之为LEDF启发式的任务的有趣方式。
从论文:
低能量早期截止期第一种启发式算法,或简称LEDF,是着名的早期最早期限(EDF)算法的延伸。 LEDF的操作如下:LEDF维护所有释放任务的列表,称为“就绪列表”。 当任务被释放时,具有最近期限的任务被选择执行。 通过在较低的电压(速度)下执行检查来检查是否可以满足任务的最终期限。 如果能够满足最后期限,则LEDF将较低的电压分配给任务,任务开始执行。 在任务执行期间,其他任务可能会进入系统。 这些任务被假定为自动放置在“就绪列表”上。 LEDF再次选择要执行的最近期限的任务。 只要有等待执行的任务,LEDF就不会使处理器闲置。 重复这个过程,直到所有的任务都被安排好。
在伪代码中:
Repeat forever {
if tasks are waiting to be scheduled {
Sort deadlines in ascending order
Schedule task with earliest deadline
Check if deadline can be met at lower speed (voltage)
If deadline can be met,
schedule task to execute at lower voltage (speed)
If deadline cannot be met,
check if deadline can be met at higher speed (voltage)
If deadline can be met,
schedule task to execute at higher voltage (speed)
If deadline cannot be met,
task cannot be scheduled: run the exception handler!
}
}
看起来,实时调度是一个有趣且不断发展的问题,因为小型低功耗设备变得更加无处不在。 我认为这是一个我们将会看到大量进一步研究的领域,我期待着与他们并驾齐驱!
一种常见的实时调度方案是使用基于优先级的抢占式多任务处理。
每个任务都分配了不同的优先级别。
就绪队列上最高优先级的任务将是运行的任务。 它会运行,直到它放弃CPU(即延迟,等待信号量等等)或更高优先级的任务准备运行。
这种方案的优点是系统设计人员可以完全控制哪些任务将以什么优先级运行。 调度算法也很简单,应该是确定性的。
另一方面,低优先级任务可能会因CPU而不足。 这将表明设计问题。
链接地址: http://www.djcxy.com/p/84807.html上一篇: Task Schedulers