HRTOS Task

任务状态模型(Task State Model)

任务状态模型用于描述任务当前执行状态以及任务管理状态, 是HRTOS任务控制、调试和系统监控的重要基础。

概述

HRTOS任务状态由任务控制信息以及运行环境共同决定。 系统通过任务控制标志、当前任务编号以及任务事件信息判断任务状态。

任务状态模型关注任务本身是否能够参与运行, 而任务等待原因由Wait模块单独管理。

状态定义

os_task_get_state() 返回值: 0 任务不存在 / 已删除 1 当前运行任务 2 就绪任务 3 挂起任务 4 最近一次被切出的任务
HRTOS采用简化状态表示,不额外增加大量中间状态。

状态判定机制

任务状态查询由多个核心控制信息共同决定。

OS_PROCESS_OK 任务是否注册以及启动状态 OS_CURRENT_TASK 当前运行任务编号 OS_PREV_TASK 最近一次运行任务编号 OS_KUAI_PROCESS_A/B 高速任务运行标志

普通任务与高速任务采用不同状态判断方式, 但统一通过任务接口向外提供查询能力。

状态转换模型

CREATE ↓ READY ↓ RUNNING ↓ SUSPEND ↓ READY RUNNING ↓ DELETE REQUEST ↓ IDLE CLEANUP ↓ DEAD

任务状态转换由任务控制接口、系统运行状态以及资源管理机制共同影响。

与等待机制的关系

任务在等待资源、消息、事件或者时间条件时, 会暂时失去运行资格。

WAIT模块负责: delay semaphore mutex message event mailbox
WAIT描述“为什么暂停”,Task状态描述“任务当前处于什么管理状态”。

关键接口

os_task_get_state(id) os_task_suspend(id) os_task_resume(id) os_task_delete(id) os_task_exit()

这些接口用于任务状态控制以及运行状态查询。

运行流程

任务创建 ↓ 注册任务信息 ↓ 进入就绪状态 ↓ 获得CPU执行 ↓ 运行 / 挂起 / 删除 ↓ 资源清理

设计特点

  • 状态模型简单,降低任务管理开销
  • 任务状态与等待机制分离
  • 支持普通任务和高速任务统一管理
  • 状态信息可通过API查询
  • 删除采用延迟清理方式保证稳定性
HRTOS通过简洁状态模型保证任务行为可预测,复杂同步行为由Wait模块扩展完成。