HRTOS / Task Scheduling

任务优先级 Task Priority

任务优先级用于表达任务在调度体系中的执行级别。 HRTOS 将普通任务、高速任务与中断相关执行层纳入整体执行模型。 理解这些级别的职责边界,有助于正确配置任务, 并进一步分析抢占行为、执行现场管理与实时响应路径。

Priority Model Task Scheduling 8051 Execution Context
01

概述

HRTOS 使用多级优先级体系描述不同执行实体的级别。 在本页所述的优先级约定中,数值越大表示级别越高。 普通任务与高速任务属于任务执行模型, 中断及嵌套中断则涉及独立的中断处理与执行控制机制。

需要注意:优先级数值、任务 ID 和硬件中断优先级不是同一个概念。 任务优先级参与内核调度决策,而中断的进入、嵌套与退出 还受到硬件配置及内核中断处理机制的约束。

基本规则: 优先级数值较高不意味着任务在任何时刻都能无条件运行。 实际执行仍取决于任务状态、当前执行上下文和系统调度规则。
02

优先级层级划分

按照 HRTOS 当前采用的层级约定,可以将相关执行级别概括如下。 其中普通任务与高速任务属于任务层级, 中断相关级别用于说明中断处理路径在整体执行模型中的位置。

0–7 Priority

普通任务

面向常规应用逻辑,依据配置的优先级参与内核调度。 同优先级任务之间的运行关系还取决于调度模式。

8 Priority

高速任务

使用专门的任务执行现场管理方式。 其寄存器与上下文设计应结合 HRTOS 的 8051 内核实现理解。

9 Execution

中断执行层

对应中断处理相关的执行路径。其行为不能简单等同于普通任务 通过任务创建接口配置出的优先级。

10 Execution

嵌套中断执行层

用于描述嵌套中断相关的更高执行层级。 具体进入条件、嵌套限制和返回路径由中断模块及内核实现决定。

较低执行级别 执行级别递增 较高执行级别
上述数值描述的是 HRTOS 的执行级别约定,不表示所有级别都能通过 os_task_create() 的优先级参数设置。 中断执行层应与普通任务优先级分开理解。
03

普通任务优先级

普通任务使用 0–7 的优先级范围。 应用可以根据任务对响应速度、执行频率和业务重要性的要求, 为不同任务分配合适的级别。

Task Creation C
os_task_create(
    addr,
    id,
    pr,
    sd
);

/* 普通任务优先级范围 */
pr = 0 ~ 7

高优先级任务

适合对响应时间要求较高的工作。 设计时仍需评估执行时间,避免长期占用 CPU 影响其他任务。

低优先级任务

适合后台处理和非紧急工作。 应结合系统负载与调度策略,避免任务长期得不到执行机会。

不建议仅根据任务的重要程度分配优先级。 还应考虑任务执行时间、阻塞行为、响应期限以及与其他任务的依赖关系。
04

高速任务优先级

高速任务使用优先级 8,并采用区别于普通任务的执行现场管理方式。 在 8051 架构上,专用寄存器组与上下文布局能够影响现场保存和恢复的成本。

Fast Task Context 8051 / HRTOS
Priority: 8

OS_KUAI_SP[]
OS_FAST_CONTEXT[]

高速任务的设计重点是明确其执行约束、上下文边界与可调用接口。 具体切换开销应根据实际汇编实现、编译结果和目标芯片测量, 不宜只凭“高速任务”这一名称推断确定的性能优势。

实现关联: 高速任务的现场保存与恢复细节请结合 上下文切换文档 阅读。
05

任务优先级接口

优先级通常在任务创建时指定。 如果当前版本提供运行期优先级修改或查询接口, 则应遵循其参数约束、返回值定义与可调用上下文限制。

Priority API Reference C
os_task_create(
    addr,
    id,
    pr,
    sd
);

/* 以下接口需核对当前版本 API */
os_task_set_priority(id, pr);
os_task_get_priority(id);
版本核对: os_task_set_priority() 和 os_task_get_priority() 只有在当前版本头文件及实现中确实存在时,才应作为正式 API 使用。 普通任务与高速任务的优先级限制也应以实际接口检查逻辑为准。
06

优先级与调度流程

优先级参与任务选择,但它本身不是完整的调度算法。 调度器还需要判断任务是否具备运行条件,并遵循系统当前采用的调度模式。

任务状态
优先级规则
调度决策
执行任务

优先级模式

高优先级任务满足运行条件时,可能依据内核规则抢占当前任务。 实际触发时机取决于调度点与执行上下文。

时间片模式

在支持时间片轮转的场景中,同优先级任务可以按调度规则轮流运行。 具体轮转范围与时机取决于系统配置。

优先级高不等于任务始终运行;任务是否就绪、当前是否处于中断上下文, 以及调度器何时获得控制权,都会影响实际执行顺序。
07

优先级继承与资源同步

优先级继承通常用于解决特定资源同步场景中的优先级反转问题: 当低优先级任务持有资源,而高优先级任务等待该资源时, 系统可以在满足相应条件时临时调整持有者的有效优先级。

但优先级继承并不是所有 RTOS 都默认具备的功能, 也不能仅凭存在任务优先级接口就推断 HRTOS 已实现该机制。 是否支持、适用于哪些同步对象,以及如何恢复原优先级, 都需要以当前版本的内核代码和同步模块文档为依据。

在确认 HRTOS 当前版本实现之前,本节仅介绍优先级继承的一般概念, 不将其视为已确认的 HRTOS 功能。
08

设计与使用要点

明确级别语义

区分任务 ID、任务优先级、硬件中断优先级和内核执行层级。

评估执行时间

高优先级任务仍需控制执行时间,避免持续占用 CPU。

关注调度模式

理解抢占、同优先级轮转和调度触发条件之间的关系。

核对真实 API

对运行期优先级修改、查询及资源同步机制进行版本级验证。