概述
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模块扩展完成。