HRTOS Task

任务生命周期(Task Lifecycle)

任务生命周期描述任务从创建、运行、控制到删除回收的完整过程, 是HRTOS任务管理的基础模型。

概述

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()

这些接口提供任务暂停、恢复、退出以及主动调度控制能力。

生命周期特点

  • 任务状态可查询、可追踪
  • 删除采用延迟清理机制,提高系统稳定性
  • 任务栈与上下文独立管理
  • 支持普通任务和高速任务两种执行模型
  • 等待机制与任务生命周期分离设计
生命周期设计目标:保证任务状态变化可控、资源释放安全、系统长期稳定运行。