HRTOS · ROUND ROBIN

时间片轮转调度

时间片调度通过为任务分配处理器执行时间,控制任务持续运行的时间范围。 HRTOS 将调度模式选择与 Tick 配置结合起来, 为实时优先级调度和用户定义的通用调度策略提供不同的运行方式。

8051 Native Tick Configuration Scheduler Modes Task Time Slicing
01

机制概述

时间片轮转调度是一种以执行时间为依据组织任务运行的调度方法。 当任务持续处于可运行状态时,时间片机制可以为调度器提供切换任务的时间依据。

在 HRTOS 中,时间片轮转不能脱离调度模式单独理解。 系统的调度策略选择会影响任务的运行顺序, 而 Tick 配置则与时间片调度的时间粒度和分配有关。

TIME SLICE

时间片

用于描述调度策略分配给任务的执行时间额度或时间片数量。

SCHEDULER MODE

调度模式

决定内核采用哪种调度策略处理任务之间的运行关系。

时间片轮转不等于所有任务获得相同的处理器时间。 HRTOS 的通用模式还会根据任务优先级分配不同数量的时间片。
02

调度模式

HRTOS 提供调度模式切换接口。 使用时应区分“切换实时与通用调度模式”和“选择默认调度器或用户调度策略”这两个操作。

ID = 1

实时模式

采用 HRTOS 的默认实时调度策略,以任务优先级为重要调度依据。 高优先级任务的调度与抢占行为应结合实际内核规则理解。

ID = 0

通用模式

采用时间片轮转相关的通用调度策略。 任务获得的时间片数量与优先级相关,不能据此认为所有任务拥有相同的执行额度。

切换实时与通用模式

extern char os_scheduler_mode_switch(unsigned char id); /* * id = 1:实时模式(优先级调度) * id = 0:通用模式(时间片轮转) */

接口声明与模式含义按项目提供的定义展示。

选择默认调度器或用户调度策略

extern char os_set_scheduler(unsigned char id); /* * id = 1:HRTOS 默认实时调度模式 * id = 0:MYOS 用户策略模式 */

这两个接口的职责并不应被简单视为同一件事。 修改调度模式或调度器选择前,应根据当前系统配置确认调用时机、 初始化要求和两个接口之间的约束。

注意: 不要在没有核对实现的情况下推断这两个接口可以任意交替调用, 也不要仅根据接口声明推断其返回值的具体含义。
03

时间片分配规则

根据 HRTOS 提供的通用模式说明,时间片分配与任务优先级相关: 优先级越高,分配的时间片越多;最低优先级也至少分配一个时间片。

时间片数量与优先级相关 优先级较高 → 分配更多时间片 优先级较低 → 分配较少时间片 最低优先级 → 至少一个时间片

这里描述的是时间片数量的分配关系,不应直接理解为任务每次连续运行的时间 一定与优先级成简单线性比例。实际运行时间还取决于 Tick 粒度、 调度触发条件、任务状态以及其他内核事件。

公平性应结合优先级理解。 时间片机制可以减少持续运行任务长期独占处理器的情况, 但当不同任务获得的时间片数量不同,或任务的运行状态不同, 它们得到的处理器时间也可能不同。
04

Tick 配置与时间统计

Tick 配置是 HRTOS 调度初始化的重要部分。 时间片数量和 Tick 参数需要结合目标平台与系统配置设置; 时间统计接口则可用于获取运行时间信息和辅助分析调度行为。

Tick 配置

extern char os_tick_config(u8 slice_count, u16 tick_value); /* * slice_count:时间片数量相关配置 * tick_value:Tick 参数 * * 系统调度核心初始化接口 */

该接口属于系统调度初始化路径。 参数单位、有效范围以及重复调用行为应以 HRTOS 对应版本的头文件和实现为准。

获取系统 Tick 计数

extern void os_tick_get(u16 *high, u16 *low);

根据项目提供的接口说明,该接口用于获取系统 Tick 计数的高、低部分, 可作为调度分析、时间统计和性能测量的基础。 调用方应使用与实际接口定义一致的变量类型和数据解释方式。

获取系统运行时间

extern u32 os_uptime_ms(void);

该接口用于获取系统开机运行时间,单位为毫秒, 可用于运行状态监控、运行时长记录和健康检测。 使用时应注意返回类型的取值范围以及计数回绕问题。

时间统计接口的存在不等于系统会自动记录每个任务的 CPU 使用率, 也不代表它们能够单独给出任务最坏执行时间。 这些用途需要结合具体测量方案实现。
05

时间片调度流程

下图用于说明时间片调度的一般概念流程。 它不是对 HRTOS 内核内部队列操作或每一条代码路径的逐行描述。

任务可运行 任务处于允许调度的状态
执行与计时 根据当前模式和 Tick 配置运行
重新调度 根据调度规则确定后续执行任务

时间片到期、任务状态变化或主动让出处理器,都可能与调度行为有关。 具体情况下是否切换任务,以及如何确定下一个任务, 应以当前调度模式和内核实现为准。

不应把通用 RTOS 中“时间片到期后移动到就绪队列尾部”的典型实现, 未经验证就直接当作 HRTOS 的内部实现细节。
06

使用与验证建议

1
先确定调度策略 明确系统采用 HRTOS 默认实时调度模式,还是需要使用通用时间片策略或用户定义的调度方式。
2
核对 Tick 参数 结合目标 MCU、定时器配置和系统初始化流程,确认 Tick 参数与预期调度行为一致。
3
观察不同优先级任务 在受控测试条件下观察不同任务的执行顺序、时间片行为和响应变化。
4
记录测试条件 保存芯片型号、时钟、编译配置、调度模式、Tick 参数和任务负载,便于重复验证。