uCOS专区

任务优先级的分配

发布日期:2011/11/27

    给任务定优先级可不是件小事,因为实时系统相当复杂。许多系统中,并非所有的任务都至关重要。不重要的任务自然优先级可以低一些。实时系统大多综合了软实时和硬实时这两种需求。软实时系统只是要求任务执行得尽量快,并不要求在某一特定时间内完成。硬实时系统中,任务不但要执行无误,还要准时完成。

 

一项有意思的技术可称之为单调执行率调度法RMS(Rate Monotonic Scheduling),用于分配任务优先级。这种方法基于哪个任务执行的次数最频繁,执行最频繁的任务优先级最高。

 

任务执行频繁度(Hz)

    RMS做了一系列假设:

所有任务都是周期性的

任务间不需要同步,没有共享资源,没有任务间数据交换等问题

CPU必须总是执行那个优先级最高且处于就绪态的任务。换句话说,要使用可剥夺型调度法。

给出一系列n值表示系统中的不同任务数,要使所有的任务满足硬实时条件,必须使不等式[2.1]成立,这就是RMS定理:

 

[2.1] 

 

 

这里Ei是任务i最长执行时间,Ti是任务i的执行周期。换句话说,Ei/Ti是任务i所需的CPU时间。表2.1给出n(21/n - 1 )的值,n是系统中的任务数。对于无穷多个任务,极限值是  或0.693。这就意味着,基RMS,要任务都满足硬实时条件,所有有时间条件要求的任务i总的CPU利用时间应小于70%!请注意,这是指有时间条件要求的任务,系统中当然还可以有对时间没有什么要求的任务,使得CPU的利用率达到100%。使CPU利用率达到100%并不好,因为那样的话程序就没有了修改的余地,也没法增加新功能了。作为系统设计的一条原则,CPU利用率应小于60%到70%。

 

    RMS认为最高执行率的任务具有最高的优先级,但最某些情况下,最高执行率的任务并非是最重要的任务。如果实际应用都真的像RMS说的那样,也就没有什么优先级分配可讨论了。然而讨论优先级分配问题,RMS无疑是一个有意思的起点。

2.1基于任务到CPU最高允许使用率.

任务数

n(21/n - 1)

1

1.000

2

0.828

3

0.779

4

0.756

5

0.743

.

.

.

.

.

.