完整调度流程(Full Schedule Flow)

本页面描述 HRTOS 内核从中断触发到任务切换的完整调度链路, 覆盖中断、调度决策、上下文切换与任务恢复全过程。

机制定义

Full Schedule Flow = Interrupt → Schedule → Select → Switch → Restore

内核决策模型

Kernel Decision = ISR Context + Ready Queue + Priority + Switch Condition

执行流程

1. 中断触发

SysTick 或外部中断进入内核调度入口。

2. 保存上下文

当前任务寄存器与栈状态保存。

3. 调度判断

评估 Ready Queue 中任务优先级。

4. 任务切换

选择最高优先级任务进入运行态。

5. 恢复执行

恢复目标任务上下文并继续执行。

内核API执行链

os_task_create

任务创建接口

API文档

os_schedule_request

触发调度请求

API文档

os_enter_critical

进入临界区保护

API文档

os_exit_critical

退出临界区

API文档

演示代码


#include "hrtos.h"

sbit LED_A = P1^0;
sbit LED_B = P1^1;
sbit LED_C = P1^2;

static void task_a(void)
{
    while(1)
    {
        LED_A = ~LED_A;
        os_delay(5);
    }
}

static void task_b(void)
{
    while(1)
    {
        LED_B = ~LED_B;
        os_delay(20);
    }
}

static void task_c(void)
{
    volatile u16 i;

    while(1)
    {
        LED_C = ~LED_C;

        for(i = 0; i < 3000; i++);

        os_delay(50);
    }
}

void hrtos_main(void)
{
    LED_A = 0;
    LED_B = 0;
    LED_C = 0;

    os_task_create((unsigned int)task_a, 1, 2, 5);
    os_task_create((unsigned int)task_b, 2, 3, 5);
    os_task_create((unsigned int)task_c, 3, 4, 5);
}
    

系统意义

调度流程决定 RTOS 实时性上限,是中断、任务与CPU切换的核心执行链路。

相关API入口