HRTOS 任务优先级与调度模式说明

在实时操作系统中,任务优先级直接影响任务的运行顺序和抢占关系。

HRTOS 针对 8051 平台设计了明确的优先级体系,并将普通任务、高速任务、中断任务以及中断嵌套任务划分到不同的优先级区间。

本文对 HRTOS 的任务优先级定义、指定任务优先级、时间片模式以及优先级模式进行说明。


一、HRTOS 优先级定义

HRTOS 采用:

优先级数值越大,优先级越高。

当前优先级划分如下:

优先级 类型 说明
0 Idle 空闲任务
1~7 普通任务 普通应用任务
8 高速任务 高速任务
9 中断任务 中断处理
10 中断嵌套任务 嵌套中断处理

可以直观表示为:

复制代码
优先级 10 ── 中断嵌套任务
优先级  9 ── 中断任务
优先级  8 ── 高速任务
优先级 1~7 ── 普通任务
优先级  0 ── Idle

因此:

复制代码
10 > 9 > 8 > 7 > ... > 1 > 0

需要注意的是,优先级 9 和 10 并不是普通意义上的应用任务优先级,而是 HRTOS 内部对中断处理过程进行管理时使用的运行级别。


二、优先级 0:Idle 任务

优先级 0 专用于 Idle 任务。

当系统中没有其他可以运行的任务时,CPU 进入 Idle 任务。

因此,Idle 位于整个 HRTOS 优先级体系的最低位置:

复制代码
普通任务 > Idle
高速任务 > Idle
中断任务 > Idle
中断嵌套任务 > Idle

Idle 也可以作为系统空闲时间的基础,用于执行相应的空闲处理机制。


三、优先级 1~7:普通任务

优先级 1~7 用于普通任务。

例如:

复制代码
任务A → 优先级2
任务B → 优先级5
任务C → 优先级7

在优先级模式下:

复制代码
任务C
  ↓
优先级 7
  ↓
可以抢占
  ↓
任务B
  ↓
优先级 5

因此,在优先级模式下,优先级越高的普通任务具有越高的运行权。


四、优先级 8:高速任务

优先级 8 专用于 HRTOS 高速任务。

高速任务位于普通任务和中断任务之间:

复制代码
普通任务
   ↓
优先级 1~7
   ↓
高速任务
   ↓
优先级 8
   ↓
中断任务
   ↓
优先级 9

这样设计可以使高速任务具有明显高于普通任务的运行级别,同时仍然低于中断处理过程。

高速任务同时结合 8051 独立寄存器组机制,可以进一步降低部分任务切换开销。


五、优先级 9:中断任务

优先级 9 用于 HRTOS 的中断处理过程。

当系统正在执行普通任务,而外部中断等中断事件发生时,可以进入中断处理过程。

例如:

复制代码
普通任务
   ↓
外部中断0触发
   ↓
进入中断任务
   ↓
优先级 9

因此,中断处理优先级高于普通任务以及高速任务。


六、优先级 10:中断嵌套任务

优先级 10 是 HRTOS 优先级体系中的最高级别,用于中断嵌套处理。

但这里有一个非常重要的机制:

优先级 10 并不是任何时候发生中断都会进入。

中断嵌套只有在系统当前已经处于:

  • 中断处理过程

  • HRTOS 内核运行过程

时,才会进入对应的嵌套中断处理级别。


七、普通任务运行时发生中断

假设当前 CPU 正在运行普通任务:

复制代码
普通任务
优先级 1~7

此时外部中断 0 触发。

系统进入:

复制代码
普通任务
    ↓
外部中断0
    ↓
中断任务
    ↓
优先级9

此时不会直接进入优先级 10 的中断嵌套任务。

也就是说:

普通任务运行期间发生中断,进入的是中断任务,而不是中断嵌套任务。


八、中断处理期间再次发生高优先级中断

假设系统已经处于中断处理过程:

复制代码
普通任务
    ↓
中断任务
    ↓
优先级9

此时,如果再次发生满足条件的高优先级中断,则可以进入中断嵌套处理:

复制代码
中断任务
    ↓
高优先级中断触发
    ↓
中断嵌套任务
    ↓
优先级10

此时系统运行级别变为最高的优先级 10。

可以理解为:

复制代码
普通任务
   ↓
中断
   ↓
中断任务(9)
   ↓
再次发生高优先级中断
   ↓
中断嵌套任务(10)

九、内核运行期间发生中断

HRTOS 内核运行期间,同样可能进入中断嵌套处理级别。

也就是说,中断嵌套的触发条件不仅包括:

复制代码
当前正在执行中断

还包括:

复制代码
当前正在执行 HRTOS 内核

因此,中断嵌套主要服务于已经处于中断或内核运行环境下的更高优先级中断事件。


十、指定任务优先级

HRTOS 还存在指定任务优先级的调度方式。

在这种情况下,指定任务的优先级位于:

复制代码
高速任务
    ↓
指定任务优先级
    ↓
中断任务

也就是说,它处于高速任务与中断任务之间的优先级区域。

这种机制与普通的 1~7 级应用任务不同,主要用于需要进行更明确调度控制的场景。


十一、时间片模式与优先级模式

HRTOS 的任务运行还涉及两种不同的调度思路:

  1. 时间片模式

  2. 优先级模式

两种模式的核心区别是:

优先级模式强调优先级抢占,时间片模式强调不同优先级之间的运行时间分配。

因此,不能简单地认为"优先级越高,任务就一定一直运行"。

两种模式的运行规则不同。


十二、优先级模式

在优先级模式下:

高优先级任务可以抢占低优先级任务。

例如:

复制代码
任务A → 优先级3
任务B → 优先级6

当任务 A 正在运行时,如果任务 B 满足运行条件:

复制代码
任务A(3)
    ↓
任务B(6)就绪
    ↓
任务B抢占任务A

因为:

复制代码
6 > 3

所以任务 B 获得运行权。

这种模式更加突出实时系统中经典的优先级抢占机制。


十三、时间片模式

时间片模式并不是完全按照优先级高低来决定运行顺序。

在时间片模式下:

优先级越高的任务,可以获得更多的时间片。

例如系统中存在:

复制代码
任务A → 优先级2
任务B → 优先级4
任务C → 优先级6

时间片模式并不是简单地:

复制代码
C一直运行
↓
B一直运行
↓
A一直运行

而是根据任务优先级分配不同的运行时间。

可以理解为:

复制代码
优先级6 → 获得较多时间片
优先级4 → 获得中等时间片
优先级2 → 获得较少时间片

因此,时间片模式兼顾了任务优先级和任务运行机会。


十四、两种模式的核心区别

可以通过下面的方式理解:

调度模式 核心特点
优先级模式 高优先级任务可以抢占低优先级任务
时间片模式 不完全按照优先级运行,高优先级任务获得更多时间片

因此,两种模式适用于不同的应用需求。

如果应用更加关注:

复制代码
谁的优先级最高
↓
谁立即获得运行权

则更符合优先级模式的特点。

如果应用希望多个就绪任务都获得一定运行机会,同时让高优先级任务获得更多 CPU 时间,则时间片模式更加符合这种调度思路。


十五、HRTOS 完整优先级体系

综合来看,HRTOS 可以形成如下运行级别:

复制代码
                 优先级最高
                     │
                     ▼
             ┌──────────────┐
             │ 中断嵌套  10 │
             ├──────────────┤
             │ 中断任务   9 │
             ├──────────────┤
             │ 高速任务   8 │
             ├──────────────┤
             │ 普通任务 1~7 │
             ├──────────────┤
             │ Idle       0 │
             └──────────────┘
                     ▲
                     │
                 优先级最低

其中,中断嵌套任务并不是普通任务,而是只有在特定运行环境下才会进入的最高优先级处理级别。


十六、总结

HRTOS 的优先级体系并不是简单地给每个任务分配一个数字,而是结合 8051 的任务调度、中断处理和实时响应机制进行了划分。

其基本优先级关系为:

复制代码
10  → 中断嵌套
 9  → 中断
 8  → 高速任务
1~7 → 普通任务
 0  → Idle

同时需要注意:

  • 优先级数值越大,优先级越高

  • 普通任务使用 1~7 级

  • 高速任务使用 8 级

  • 中断任务使用 9 级

  • 中断嵌套使用 10 级

  • 普通任务运行时发生中断,进入中断任务

  • 只有在中断或 HRTOS 内核运行期间发生满足条件的高优先级中断,才进入中断嵌套任务

  • 优先级模式以高优先级抢占低优先级为主要特征

  • 时间片模式不会完全按照优先级运行,而是根据优先级分配不同的时间片

  • 指定任务优先级位于高速任务和中断任务之间

通过这种分层方式,HRTOS 将普通任务、高速任务、中断以及中断嵌套纳入统一的运行级别体系,同时针对不同应用需求提供优先级调度和时间片调度机制。

这也是 HRTOS 面向 8051 实时应用进行底层调度设计的重要组成部分。

相关推荐
cu1431 小时前
细谈GM7123C的具体功能与其应用
c语言·c++·人工智能·嵌入式硬件
Travis_del2 小时前
系统架构设计师考试大纲:考试科目3 系统架构设计论文
系统架构·软考·系统架构设计师
嵌入式分享2 小时前
驱动之路#44:硬件 I2C 和软件 I2C 谁更坑?
linux·嵌入式硬件
Travis_del2 小时前
系统架构设计师考试大纲:题型举例
系统架构·软考·系统架构设计师
嵌入式分享3 小时前
嵌入式分享#19:《嵌入式外设调试思路》--I2C设备篇
单片机·嵌入式硬件
WD137298015573 小时前
WD5030K输入工作电压 7.5‑30V,适合12A 及以内量产项目
stm32·单片机·嵌入式硬件·51单片机
Jmyd01233 小时前
文物数字化系统架构设计:从三维采集到智慧管理平台的全链路方案
系统架构·点云处理·三维扫描·文物数字化·智慧文博
千秋岁rr3 小时前
12.IIC
单片机·嵌入式硬件
微三云生态系统架构师-彭丹4 小时前
消费返物业费系统商家让利归因引擎:多渠道核销与自动对账架构
架构·系统架构·智慧社区·消费返物业费系统·分账引擎·物业金·多渠道归因