HRTOS Task

任务优先级(Task Priority)

任务优先级用于描述任务执行级别,是HRTOS任务管理和调度的重要属性。

概述

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模块。