概述
HRTOS任务生命周期围绕任务控制信息、任务栈以及调度状态展开。 每个任务在系统中拥有独立的执行环境,并通过任务管理接口进行控制。
任务模块负责描述任务本身的存在状态, 而等待机制(Wait)负责描述任务因资源、事件或时间条件产生的阻塞过程。
生命周期模型
HRTOS任务主要经历以下生命周期阶段:
CREATE
↓
READY
↓
RUNNING
↓
SUSPEND
↓
READY
RUNNING
↓
DELETE REQUEST
↓
IDLE CLEANUP
↓
DEAD
WAIT属于任务运行过程中的等待机制,由Wait模块统一管理,不作为Task生命周期状态。
任务创建
任务通过 os_task_create() 注册到系统。 创建过程中系统完成任务编号检查、优先级检查以及任务栈空间分配。
os_task_create(
addr,
id,
pr,
sd
)
创建成功后,系统保存任务入口地址、任务栈信息以及调度属性, 使任务具备被调度执行的条件。
运行与控制
任务进入系统后,根据自身优先级参与运行。 HRTOS支持普通任务与高速任务两类执行单元。
普通任务:
ID 0 ~ OS_PROCESS_MAX-1
高速任务:
ID OS_PROCESS_MAX ~ OS_PROCESS_MAX+1
任务运行过程中可以通过任务控制接口主动让出CPU、 暂停执行或恢复运行。
任务删除机制
HRTOS采用删除请求与资源清理分离的方式。 任务删除不会立即破坏当前执行环境,而是先标记删除请求。
os_task_delete(id)
↓
OS_TASK_EVENT[id]
|
|-- OS_EVENT_DELETE_REQ
↓
IDLE任务检测
↓
os_task_cleanup()
↓
资源释放
该机制避免运行中的任务立即释放自身资源导致系统状态异常。
任务状态查询
os_task_get_state(id)
返回:
0 删除
1 当前运行
2 就绪
3 挂起
4 最近一次切出任务
状态查询接口用于调试、Shell以及系统运行状态监控。
任务生命周期接口
os_task_suspend(id)
os_task_resume(id)
os_task_delete(id)
os_task_exit()
os_task_yield()
os_task_self()
这些接口提供任务暂停、恢复、退出以及主动调度控制能力。
生命周期特点
- 任务状态可查询、可追踪
- 删除采用延迟清理机制,提高系统稳定性
- 任务栈与上下文独立管理
- 支持普通任务和高速任务两种执行模型
- 等待机制与任务生命周期分离设计
生命周期设计目标:保证任务状态变化可控、资源释放安全、系统长期稳定运行。