详解FreeRTOS:嵌入式多任务系统的优先级继承和优先级天花板(理论篇—10)

2023-07-05 10:09:36 浏览数 (2)


优先级反转问题的核心原因在于共享资源的访问规则,即共享资源只能被一个任务占用,被占用后其他任务不能强制使用这个资源。在优先级反转问题上,高优先级任务被低优先级任务阻塞是必定的,但被中优先级任务阻塞则是很无奈的。为了避免因为中优先级任务挟持低优先级任务从而阻塞高优先级任务的现象,可以采用一些必要的算法。

有两种经典的防止优先级反转的算法:

  • 优先级继承策略(Priority inheritance):当一个任务占有了资源并且随后阻塞了其他申请该资源的任务时,该任务将临时改变它的优先级为所有申请该资源的任务中的最高优先级,并以这个临时优先级在临界区执行。当任务释放资源后,则恢复它原有的优先级。从行为上看,占有资源的任务的优先级将是“水涨船高"式的多次改变,因为它的优先级最高,所以它不会被曾经比它优先级高的那些任务抢占。操作系统从优先级角度安排它尽快执行,尽快释放资源,但是这样做操作系统却牺牲了中等优先级任务的调度机会;

0 人点赞