欢迎光临散文网 会员登陆 & 注册

FreeRTOS与UCOSIII的任务状态

2023-08-24 11:44 作者:踏星赴梦  | 我要投稿
  1. UCOSIII的任务状态

UCOSIII的状态切换图
    • 运行态(与FreeRTOS相同):正在运行的任务、正在使用处理器(CPU)的任务,单核处理器中任务时候只有一个任务(线程)处于运行态

    • 就绪态(与FreeRTOS相同)已经准备就绪的任务(非阻塞或挂起),可以立刻运行但是还没有运行的任务就处于就绪态

      处于就绪态的任务等待的是CPU的调度,等待获取CPU的使用权

    • 等待态(类比FreeRTOS阻塞态)

      正在运行的任务需要等待某一外部事件,暂时让出CPU使用权,进入等待事件状态。

      正在等待信号量、消息、事件标志组等的任务

    • 休眠态(不同于FreeRTOS)

      可以理解为任务函数存在,但是该任务还没有被创建的状态,被删除的任务也处于休眠态。休眠态只是以任务函数的方式存在,只是存储区的一段代码。并未使用OSTaskCreate()函数创建任务,不受UCOSIII任务调度器管理。

    • 中断服务态(不同于FreeRTOS)

      一个正在执行的任务被中断打断,CPU去执行中断服务程序,被打断任务进入中断服务态。

  1. FreeRTOS的任务状态

FreeRTOS的状态切换图
    • 运行态正在运行的任务、正在使用处理器(CPU)的任务,单核处理器中任务时候只有一个任务(线程)处于运行态

    • 就绪态已经准备就绪的任务(非阻塞或挂起),可以立刻运行但是还没有运行的任务就处于就绪态

      处于就绪态的任务等待的是CPU的调度,等待获取CPU的使用权

    • 阻塞态正在等待某个外部事件的任务处于阻塞态

      • 使用vTaskDelay()后,就会进入阻塞态,直到延时结束

      • 正在等待队列、信号量、事件组、任务通知或互斥量的任务,也会进入阻塞态。

      • 阻塞态下的任务不进入调度器,等待事件到来后在退出阻塞态。进入阻塞态会有一个超时时间,等待事件的超时时间到了,会退出阻塞态,超时时间可以是无线(一直阻塞,直到事件带来)

    • 挂起态:任务被暂时停止进入的状态,挂起态任务也不进入任务调度器,挂起态任务没有超时事件。

      • 进入挂起态:vTaskSuspend();

      • 退出挂起态:xTaskResume();


FreeRTOS与UCOSIII的任务状态的评论 (共 条)

分享到微博请遵守国家法律