与一些同事讨论了实时任务的最佳调度策略,但不是每个人都对常见或有用的调度策略有很好的理解.
为了您的答案,请选择一个策略并详细介绍它,而不是提供一些策略的一些信息.如果你有什么东西可以添加到别人的描述而且它很简短,添加一个评论而不是一个新的答案(如果它很长或有用,或者只是一个更好的描述,那么请使用答案)
什么是策略 - 描述一般情况(假设人们知道任务队列是什么,信号量,锁和调度程序本身之外的其他操作系统基础)
什么是优化的策略(任务延迟,效率,实时,抖动,资源共享等)
它是实时的,还是可以实时的
目前的策略:
基于优先级的先发制人
最低功耗最慢的时钟
-亚当
正如题为" 能量感知嵌入式系统的实时任务调度"的文章所述,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! } }
随着小型,低功耗设备变得无处不在,实时调度似乎是一个有趣且不断发展的问题.我认为这是一个我们会看到大量进一步研究的领域,我期待着与时俱进!