2008-09-08 124 views
4

曾与有关实时任务的最佳调度策略的一些同事一个有趣的讨论,但不是每个人都有共同的或有用的调度策略有很好的理解。任务调度

的回答,请选择一个策略,并去了它在一些细节上,而不是在几个战略给予一点点信息。如果你有什么要添加到别人的描述和它的短,添加评论,而不是一个新的答案(如果是长还是有用的,或只是一个更好的说明,那么请使用一个答案)

  • 是什么战略 - 描述了一般的情况下(假定人知道任务队列是什么,信号量,锁和调度本身以外的其他OS基本面)
  • 这是什么策略(任务延迟,效率,实时,抖动,资源优化共享等)
  • 是实时的还是可以实时的

当前策略:

- 亚当

回答

8

就像在标题为的论文描述,斯瓦米纳坦和查克拉巴蒂描述实时任务调度低的挑战具有多种处理器速度和功耗配置文件的电源(嵌入式)设备。他们提出的调度算法(并且显示比测试中的最佳解决方案仅差1%)具有调度他们称之为LEDF启发式的任务的有趣方式。

从纸:

低能量最早截止期第一个 启发式,或简单地LEDF,是 延伸公知的最早 期限第一个(EDF)的算法。 LEDF的 操作如下:LEDF 维护的全部释放 任务的列表,称为“准备清单”。当 任务释放,而 最近的截止时间任务被选为 执行。执行检查,看是否 任务期限可以通过 在较低的电压 (速度)执行它来满足。如果最后期限能够得到满足, LEDF较低的电压分配给 任务和任务开始执行。 任务执行期间,其他 任务可能会进入系统。这些 任务被假定为自动置于“就绪列表”上 。 LEDF再次选择要执行的最近期限的 任务。作为 只要有等待被 执行的任务,LEDF不守亲 cessor闲置。该过程重复 ,直到所有任务已被排定为 。

而在伪代码:

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! 
    } 
} 

看来实时调度是一个有趣的和不断发展的问题,因为体积小,低功耗的设备变得更加普遍。我认为这是一个我们将会看到大量进一步研究的领域,我期待着与他们并驾齐驱!

2

一个常见的实时调度方案是使用基于优先级的抢占式多任务。
每个任务都分配了不同的优先级别。
就绪队列上最高优先级的任务将是运行的任务。它会一直运行,直到它放弃CPU(即延迟,等待信号量等等)或更高优先级的任务准备运行。

该方案的优点是系统设计人员可以完全控制哪些任务将以什么优先级运行。调度算法也很简单,应该是确定性的。

另一方面,CPU的低优先级任务可能会不足。这将表明设计问题。