配置为抢占式调度时,FreeRTOS是否支持优先级反转?我无法从FreeRTOS网站上找到这些信息。
发布于 2015-03-27 09:01:33
优先级反转是使用RTOS的应用程序的一种特性,而不是RTOS的特性,因此没有RTOS‘支持’优先级反转。然而,RTOSes支持诸如优先级继承和优先级上限算法等功能,以将其影响降到最低。文献会告诉你,这些算法消除了优先级反转,这当然是胡说八道,为了触发算法,倒置必须已经存在。这些算法所做的是使反演时间有界--如果可能的话,最好首先尽量避免反演。
FreeRTOS互斥量(http://www.freertos.org/Real-time-embedded-RTOS-mutexes.html)使用优先级继承来实现有时间限制的优先级反转。
发布于 2015-03-27 10:21:04
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. */每个任务的任务控制块都有一个变量来保存实际(基本)优先级,如果低优先级任务继承了高优先级任务(顺便说一下)的优先级,它也在等待与低优先级任务相同的资源。
https://stackoverflow.com/questions/29294049
复制相似问题