首页 文章

FreeRTOS和优先级倒置

提问于
浏览
1

FreeRTOS配置为抢占式调度时是否支持优先级倒置?我无法从FreeRTOS网站上找到这些信息 .

2 回答

  • 4

    优先级倒置是使用RTOS的应用程序的一个特性,而不是RTOS的特性,因此没有RTOS支持优先级倒置 . 但是,RTOS支持优先级继承和优先级上限算法等功能,以最大限度地降低其影响 . 文献将告诉您这些算法删除优先级倒置,这当然是无意义的,并且必须已经存在反转才能触发算法 . 算法所做的是使反演时间有限 - 尽管如果可能的话,最好尽量避免反演 .

    FreeRTOS互斥锁(http://www.freertos.org/Real-time-embedded-RTOS-mutexes.html)使用优先级继承来限制时间优先级 .

  • 1

    Freertos支持优先级继承作为解决优先级倒置的机制 . 请检查freertos源代码的tasks.c文件,并参考任务控制块的结构:

    #if ( configUSE_MUTEXES == 1 )
    unsigned portBASE_TYPE uxBasePriority;                /* The priority last 
                                                             assigned to the task - 
                                                             used by the priority 
                                                             inheritance mechanism. */
    

    每个任务的任务控制块都有一个变量来保存实际(基本)优先级,如果低优先级任务继承高优先级任务的优先级 - 顺便说一下 - 也等待与低优先级相同的资源优先任务 .

相关问题