![]() |
1
5
首先运行的任务是VxWorks调度程序任务首先生成的任务。VxWorks使用 基于优先级的调度 任务暂停 或 ),此时将执行另一个就绪任务,直到它被阻止,依此类推。这应该由信号量或互斥量(mutices?)控制 基于优先级的调度的主要问题就是这个问题。我们如何确定让这些任务运行多长时间?他们有相同的优先权,这一事实使事情复杂化。另一个问题是,具有高优先级的VxWorks任务(数字越小意味着优先级越高)可能会抢占您必须在代码中准备的应用程序。这些问题可以通过使用 循环调度 . 本文还描述了循环调度带来的其他问题和解决方案 here . |
![]() |
2
2
VxWorks有256个优先级(0最高,255最低)。在任何给定的时间,最高优先级的任务都在CPU上运行。每个优先级概念上都有一个队列,其中多个任务排队等待执行。
我们有3个优先级相同的任务A、B、C。假设A正在执行。
请注意,被高优先级任务抢占的任务不会影响队列的顺序。如果A正在运行并被抢占,则在完成更高优先级的任务时,它将继续执行。它不会被放在队列的末尾。 |
![]() |
3
1
您可以显式启用循环,而不是时间片。 |
|
Cantafford · FreeRTOS编译器[关闭] 7 年前 |
![]() |
0xAB1E · 从头开始编写非常基本的RTOS的最佳参考 10 年前 |
![]() |
DevenJ · 从freeRTOS运行应用程序 11 年前 |