概述
HRTOS采用多级优先级模型,不同任务类型拥有不同执行级别。 优先级数值越大表示任务级别越高。
系统通过任务创建时指定的优先级参数, 确定任务所属执行层级。
优先级范围:
0 ~ 7
普通任务
8
高速任务
9
中断任务
10
中断嵌套任务
优先级层级划分
HRTOS根据任务特点划分不同执行级别。
普通任务:
Priority 0 ~ 7
高速任务:
Priority 8
特殊执行级:
Priority 9
Interrupt
Priority 10
Nested Interrupt
中断相关机制属于Interrupt模块,本页面仅介绍其优先级层级关系。
普通任务优先级
0~7级用于普通应用任务。 任务可以根据实时性要求分配不同优先级。
os_task_create(
addr,
id,
pr,
sd
)
pr = 0 ~ 7
普通任务采用标准任务上下文模型, 通过任务管理接口进行控制。
高速任务优先级
优先级8用于高速任务。 高速任务拥有独立执行环境,与普通任务采用不同上下文管理方式。
Priority 8
OS_KUAI_SP[]
OS_FAST_CONTEXT[]
独立工作寄存器组
由于使用专用工作寄存器组, 高速任务切换过程中减少部分寄存器保存恢复开销。
任务优先级接口
os_task_set_priority(
id,
pr
)
os_task_get_priority(id)
set接口用于修改任务优先级, get接口用于查询任务当前优先级。
普通任务优先级范围:0~7;高速任务固定为8。
优先级作用流程
创建任务
↓
设置任务优先级
↓
任务进入系统
↓
调度依据优先级选择执行对象
↓
任务运行
优先级决定任务执行级别, 实际运行过程由系统调度机制统一管理。
优先级继承
HRTOS支持资源同步场景下的优先级继承机制, 用于降低高优先级任务等待低优先级任务持有资源时产生的问题。
优先级继承属于同步资源管理机制,详细说明见IPC/Wait模块。