Task Core

任务状态

在 HRTOS v2 中,任务状态不是静态分类,而是调度器基于 READY 与 WAIT 系统动态推导的运行结果。

状态模型(v2真实定义)

RUNNING ←→ READY ←→ WAIT(统一阻塞模型)

核心API: os_task_get_state · os_delay · os_wait · os_task_yield

状态本质

READY:可调度
RUNNING:正在执行
WAIT:因 delay / event / mutex 等统一阻塞

设计核心

HRTOS v2 不再区分多种 BLOCKED 子状态,而统一进入 WAIT 队列,由资源系统恢复。

状态转换行为

RUNNING → WAIT

调用 os_delay / os_wait / mutex 等

WAIT → READY

时间到或事件满足

READY → RUNNING

调度器选择最高优先级任务

RUNNING → READY

os_task_yield 或时间片抢占

演示代码


#include "hrtos.h"

sbit LED_RUN = P1^0;

/* 任务:状态演示 */
void task_demo(void)
{
    while(1)
    {
        /* 运行态:进入CPU */
        LED_RUN = 1;

        os_delay(3);   // 进入延时 → 阻塞态

        /* 从延时恢复 */
        LED_RUN = 0;

        os_delay(3);
    }
}

/* 系统入口 */
void hrtos_main(void)
{
    LED_RUN = 0;

    os_task_create((unsigned int)task_demo, 1, 2, 5);
}
    

系统意义

任务状态机制的核心价值在于:用统一 WAIT 模型替代传统多分类阻塞状态。

✔ 状态简化为调度结果
✔ WAIT统一管理所有阻塞来源
✔ READY仅表示“可运行”