一、什么是优先级反转(Priority Inversion)?
优先级反转是指高优先级任务因等待被低优先级任务占用的共享资源,而被中优先级任务阻塞的现象,导致系统的实时性被破坏。这是多任务系统中常见的致命问题。
二、为什么会出现优先级反转?
根本原因:
资源竞争 + 不合理的调度策略
当不同优先级的任务共享同一资源(如互斥锁)时,若缺乏保护机制,低优先级任务可能间接阻塞高优先级任务。
典型触发场景:
- 任务优先级关系:
高 > 中 > 低 - 资源依赖链:
- 低优先级任务先获取互斥锁
- 高优先级任务请求该锁时被阻塞
- 中优先级任务抢占CPU执行
三、优先级反转的经典案例
场景设定:
- 任务优先级:
Task_H(高)> Task_M(中)> Task_L(低) - 共享资源:互斥锁
Mutex_X
问题发生流程:
// 低优先级任务
void Task_L() {
xSemaphoreTake<

最低0.47元/天 解锁文章
715

被折叠的 条评论
为什么被折叠?



