优先级调度演示
HRTOS 调度器基于 READY 队列优先级选择机制,高优先级任务可在时间片边界触发抢占执行。
调度机制定义
Scheduling = READY队列扫描 + 优先级比较 + os_switch上下文切换
核心API: os_switch · os_task_create · os_task_get_state · os_tick_get
调度流程
任务进入READY
任务创建后进入就绪队列等待调度。
优先级扫描
调度器从READY队列选择最高优先级任务。
抢占判断
高优先级READY任务触发抢占条件。
上下文切换
调用 os_switch 完成任务切换。
执行模型
创建低优先级任务
进入READY队列(优先级1)
创建高优先级任务
进入READY队列(优先级3)
调度器运行
优先级3任务优先执行
持续抢占
高优先级任务周期性获得CPU
演示代码
#include "hrtos.h"
sbit LED_HIGH = P1^0;
sbit LED_LOW = P1^1;
void task_low(void)
{
while(1)
{
LED_LOW = ~LED_LOW; // 慢闪
os_delay(20);
}
}
void task_high(void)
{
while(1)
{
LED_HIGH = ~LED_HIGH; // 快闪(体现抢占更频繁)
os_delay(5);
}
}
void hrtos_main(void)
{
LED_LOW = 0;
LED_HIGH = 0;
os_task_create((unsigned int)task_low, 1, 1, 5);
os_task_create((unsigned int)task_high, 2, 3, 5);
}
系统意义
优先级调度确保高实时性任务优先获得CPU执行权,是HRTOS抢占式内核的核心基础。