FreeRTOS与UCOSIII任务状态对比

FreeRTOS任务状态

1、运行态

正在运行的任务,正在使用处理器的任务。
单核处理器中任何时候都有且只有一个任务处于运行态。

2、就绪态

已经准备就绪(非阻塞或挂起),可以立即运行但还没有运行的任务。
正在等待比自己高优先级任务结束后运行的任务。

3、阻塞态

正在等待某个外部事件的任务。
阻塞态下不进入任务调度器,等待事件到来后再退出阻塞态。
使用了vTaskDelay()后,就会进入阻塞态直到延时结束。
正在等待队列、信号量、事件组、通知或互斥信号量的任务,也会进入阻塞态。
进入阻塞态会有一个超时时间,等待事件超时了未到,会退出阻塞态。

4、挂起态

挂起态任务也不进入任务调度器。
挂起态任务没有超时事件。
进入挂起态:vTaskSuspend();
退出挂起态:xTaskResume();
在这里插入图片描述

5、任务优先级

FreeRTOS优先级数字越低表示任务的优先级越低,0 的优先级最低,configMAX_PRIORITIES-1 的优先级最高。
空闲任务的优先级最低,为 0。
定时器服务任务优先级最高,为configMAX_PRIORITIES-1。
如果采用硬件配置优先级,则configMAX_PRIORITIES最大为32
如果采用软件配置优先级,则configMAX_PRIORITIES无限制

UCOSIII任务状态

1、运行态(与FreeRTOS相同)

正在运行的任务,正在使用处理器的任务。
单核处理器中任何时候都有且只有一个任务处于运行态。
UCOSIII不支持多核CPU。

2、就绪态(与FreeRTOS相同)

已经准备就绪(非阻塞或挂起),可以立即运行但还没有运行的任务。
正在等待比自己高优先级任务结束后运行的任务。

3、等待态(类比FreeRTOS阻塞态)

正在运行的任务需要等待某一外部事件,暂时让出CPU使用权,进入等待事件状态。
正在等待信号量、消息、事件标志组等的任务

4、休眠态(不同于FreeRTOS)

休眠态只是以任务函数的方式存在,只是存储区的一段代码。
并未使用OSTaskCreate()函数创建任务,不受UCOSIII任务调度器管理。

5、中断服务态(不同于FreeRTOS)

一个正在执行的任务被中断打断,CPU去执行中断服务程序,被打断任务进入中断服务态。
在这里插入图片描述

6、任务优先级

UCOSII中,优先级数字越低表示任务的优先级越高,0 的优先级最高,OS_CFG_MAX-1 的优先级最低。
UCOSIII支持无限多的任务优先级

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值