我们有两项任务(T1和T2)在我们的vxWorks嵌入式系统,该系统具有相同的优先权(110)中。
如何经常vxWorks调度处理这个如果两个任务是准备运行?
其执行任务的第一?

有帮助吗?

解决方案

该任务,将运行的第一个任务就是产生了第一个作为实现VxWorks调度程序的任务。VxWorks使用 优先权基于调度 通过默认。所以在你的情况下,由于T1和T2有相同的优先权,无论哪一个得到的CPU首先将继续无限期运行,直到它是明确阻止(使用 taskSuspendtaskDelay),在这段时间的其他准备任务将执行直到它被封锁,等等。这应该是控制信号或互斥(mutices?)

主要的问题与优先权基于调度是照亮这个确切的问题。我们如何确定如何长让这些任务的运行?事实上,他们有相同的优先复杂的事情。另一个关切是,VxWorks任务,具有高优先级(低数量意味着更高的优先权)可以抢占你的应用程序,你必须准备在你的代码。这些问题是可以解决的使用 循环调度.额外的问题所构成的循环调度和解决方案的所有描述 在这里,.

其他提示

VxWorks有256优先级别(0是最高的,255是最低的).在任何给定的时间,最高优先任务上运行。每一优先等级概念上有一个队列里多任务的队执行。

我们有3个任务在相同的优先权的A、B、C。假设是执行。
当一块(taskDelay,SemTake,msgQReceive),B会开始执行。
当疏导,这是把末尾的队列。我们现在有B、C、A。
当B块,C,等等...

如果轮调度(时间分片)启用了相同的概念适用,但任务得到放在底的队列当其时间片。

注意,任务是预先占有的更高优先级任务不会影响顺序排队。如果一个运行,并得到捷足先登,它将继续执行当更高的优先任务是完成。它不会把结束时的队列。

通过默认的一个这是产生了第一个将被执行的,除非它放弃CPU的其他会从来没有运行。

你可以明确地启用循环,比他们将每.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top