【Vxworks操作系统】实时多任务介绍-NO.2

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

目录

   实时多任务

1.1  任务生命周期管理

 1.2  任务状态控制

1.3  任务调度

1.4   用户接口

结语:


       实时操作系统是基于多任务任务间通信的概念的操作系统,多任务环境允许一个实时应用由一组各自独立的任务组成,每个任务拥有自己的执行线程和一组系统资源。

   实时多任务

        任务管理和调度是实时操作系统的核心,该模块提供任务生命周期管、控制和调度支持。
    
        任务生命周期管理包括:任务创建、任务删除等。
    
        任务状态控制包括:任务在就:绪态(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。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值