当前位置:  开发笔记 > 编程语言 > 正文

vxWorks如何以相同的优先级处理两个任务?

如何解决《vxWorks如何以相同的优先级处理两个任务?》经验,为你挑选了1个好方法。

我们的vxWorks嵌入式系统中有两个具有相同优先级(110)的任务(T1和T2).
如果两个任务都准备好运行,常规vxWorks调度程序如何处理?
哪个任务先执行?



1> unwieldy..:

首先运行的任务是首先由VxWorks调度程序任务实现的任务.默认情况下,VxWorks使用基于优先级的调度.因此,在您的情况下,由于T1和T2具有相同的优先级,因此无论哪一个获得CPU,它将继续无限期地运行,直到它被明确阻止(使用taskSuspendtaskDelay),此时另一个READY任务将执行,直到它被阻止, 等等.这应该由信号量或互斥量控制(突变?)

这个确切的问题阐明了基于优先级的调度的主要问题.我们如何确定让这些任务运行多长时间?他们具有相同优先级的事实使事情复杂化.另一个问题是具有高优先级的VxWorks任务(较低的数字意味着较高的优先级)可以抢占您必须在代码中准备的应用程序.通过使用循环调度可以解决这些问题.这里将描述循环调度和解决方案带来的其他问题.

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有