Scheduling Core

优先级调度演示

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抢占式内核的核心基础。