1 任务静态优先级
-
AUTOSAR OS 将值 0 指定为操作系统中最低的任务优先级。数字越大,任务的优先级越高。
如下图所示:
- 1、Idle task的优先级为0。
- 2、ResScheduler所代表的调度程序优先级是任务中最高的优先级. 也就是拥有这个资源「ResScheduler」的任务的优先级最高,不能被其他task抢占。
- 3、中断的优先级总是高于任务的优先级。
-
[在 AUTOSAR OS 中,优先级是静态分配给每个任务的,并且不能在运行时更改。不支持动态优先级管理。但是,在特定情况下,操作系统可以更改任务优先级,具体可参考优先级天花板协议。
-
当执行重新调度时,调度器总是切换到就绪任务和正在运行的任务中优先级最高的任务。
2 任务优先级代码解析
2.1 优先级类型定义
一般优先级定义的类型取决于不同优先级任务的数量多少;uint8可以支持254个任务级数量(去除0和255,这两个预留给Idle和ResScheduler了)
typedef uint8 OsPriorityType