目录
实时操作系统是基于多任务和任务间通信的概念的操作系统,多任务环境允许一个实时应用由一组各自独立的任务组成,每个任务拥有自己的执行线程和一组系统资源。
实时多任务
任务管理和调度是实时操作系统的核心,该模块提供任务生命周期管、控制和调度支持。
任务生命周期管理包括:任务创建、任务删除等。
任务状态控制包括:任务在就:绪态(Ready)、阻塞(Pend)、挂起(Suspend)、延时(Delay)四个状态间的切换,任务优先级设置与获取,任务调度锁定。
任务调度,提供基于优先级抢占式任务调度,在同优先级的任务提供可选的Round-Robin时间片轮转调度。
1.1 任务生命周期管理
1、任务创建和删除。
任务创建使用taskSpawn()函数,
函数原型:
int taskSpawn()
{
char* name,
int periority,
int options,
int stackSize,
FUNCPTR entryPt;
int arg1,
int arg2,
int arg3,
int arg4,
int arg5,
int arg6,
int arg7,
int arg8,
int arg9,
int arg10
}
该函数共有15参数,分别表示:任务名、任务优先级、任务选项字、任务堆栈大小、任务入口函数、以及任务入口函数的10个可选参数;
任务创建和激活成功后返回任务ID号,失败时返回ERROR;
针对参数有一下要求:
1)任务名:便于记忆,最好是以t或者u开始的一个字符串;
2)任务优先级:0~255之间,最高优先级是0,最低优先级是255,建议创建任务优先级在150之后;
3)任务选项字:当任务有浮点数操作计算或者调用浮点计算函数时,任务选项字是VX_FP_TASK;当任务没有浮点数操作计算,也不调用浮点计算函数时,任务选项字是0;
4)任务堆栈:创建任务时分配的内存,包含了任务控制块(TCB)和任务名,剩余内存是任务堆栈,默认使用0XEE填充,这种初始化填充主要用于任务堆栈检查函数checkStack();
5)任务入口函数:任务创建和激活成功后,系统调用这个函数,最多有10个可选参数,任务入口函数在任务堆栈空间运行,因此必须设置足够大的任务堆栈,并且任务入口函数及其调用函数中不允许使用大量占用空间的数组,结构体变量等。
2、任务删除函数;
taskDelete()
函数原型:
STATUS taskDelete
{
int tid;
}
taskDelete()只有一个参数,是任务名称,任务删除成功后返回OK,失败时返回ERROR。

文章详细介绍了VxWorks实时操作系统中的任务管理,包括任务生命周期(创建、删除)、状态控制(就绪、阻塞、挂起、延迟)以及调度机制(优先级抢占和Round-Robin)。此外,还提到了任务接口如taskSpawn、taskDelete等,以及任务间通信的预览。
最低0.47元/天 解锁文章
3901

被折叠的 条评论
为什么被折叠?



