μCOS 系列专题—分配优先级(Assigning Task Priorities)

19.为任务指定优先级(Assigning Task Priorities)

实时系统固有的复杂性使得指定任务优先级的工作不是一件简单的事情。在大多数系统中,并不是所有的任务都是至关重要的,也不说不重要的任务就应该指定较低的优先级。多数实时系统在软件和硬件两方面的都有一定的要求,在软实时系统中,任务需要尽可能快的被执行,但并没有明确的时间说明任务何时会完成。在硬实时系统中,任务不仅必须正确的被执行,而且在时间方面也是要严格要求。

指的一提的是一项叫做单调比率调度算法RMS(Rate MonotonicScheduling)的技术,它主要基于任务执行的频率来为每个任务分配优先级。简单地说,就是为执行频率较高的任务分配较高的优先级,具体如下图所示:

μCOS 系列专题—分配优先级(Assigning Task Priorities)_第1张图片

RMS主要有以下几个前提假设:

● 所有的任务都是周期性的(任务之间的间隔是由规律的);

● 任务相互之间不需要同步、共享资源、和数据交换;

● 处理器必须总是要先处理就绪等待执行的最高优先级任务。换句话说,使用的必须是可抢占的调度算法。

给定一个包含n个任务的集合,这些任务按照RMS算法指定了优先级,要使所有的任务满足硬实时系统要求,下面的不等式必须成立,这就是RMS的基本理论:

μCOS 系列专题—分配优先级(Assigning Task Priorities)_第2张图片

在这里,Ei是任务i的最大执行时间,Ti是任务i的执行周期,换句话说,Ei/Ti是任务i所需要的CPU时间比。下面的表格给出了在不同任务数量情况下的n(21/ n - 1)的大小,当任务数量n趋于无穷大的时候,n(21/ n - 1)的值趋于ln(2),或者0.693。这表明,对于所有的基于RMS算法的硬实时系统,所有有时间要求任务的CPU的利用率低于70%。注意,对于没有时间要求的任务来说CPU的使用率仍旧是100%。使CPU的使用率达到100%也不是期望的目标,因为这样的话,就不允许改变代码和增加新的特性。这里推荐一个原则:在系统设计的时候,应该使CPU的使用率保持在60%~70%。

μCOS 系列专题—分配优先级(Assigning Task Priorities)_第3张图片

RMS认为,高频任务(调度频率最高的任务)应具有最高优先级。在一些例子中,高频任务也可能不是最重要的任务。不过这样一来,你也不需要为应用分配什么优先级了。RMS仅仅只是一个开始,很多东西还是需要结合具体的工程实践去总结。






你可能感兴趣的:(uCOS)