实时系统中,低优先级任务 L 持有互斥锁,高优先级任务 H 申请该锁后阻塞。此时不使用该锁的中优先级任务 M 不断抢占 L,使 H 长时间无法继续。较合适的缓解机制是()。
优先级继承让持有 H 所需资源的 L 临时提升到较高优先级,减少被 M 抢占的机会,使 L 尽快完成临界区并释放锁;释放后再恢复原优先级。
选项分析
错误。降低H的优先级会破坏实时任务的紧迫性定义,也没有让L更快释放资源。
正确。L临时继承阻塞任务的较高优先级,可减少中优先级任务造成的额外延迟。
错误。互斥锁的目的就是避免多个任务同时进入受保护临界区。
错误。长期禁止任务切换会破坏并发与实时响应,不是正常的资源访问协议。
本题为什么容易错
很多同学只看到 H 等 L,就以为这只是普通互斥阻塞。题眼其实是 M 不需要这把锁,却能不断抢占 L,把 H 的等待放大,这才是典型优先级反转。
简短答案
高优先级任务等待低优先级任务释放锁,为什么会被中优先级任务继续拖延,正确答案是 B(在 L 持锁期间临时继承 H 的优先级,释放锁后恢复原优先级)。优先级继承让持有 H 所需资源的 L 临时提升到较高优先级,减少被 M 抢占的机会,使 L 尽快完成临界区并释放锁;释放后再恢复原优先级。
易混淆概念对比表
| 概念 | 本题判断 | 区别要点 | 记忆提示 |
|---|---|---|---|
| 永久降低任务 H 的优先级 | 本题干扰项 | 错误。降低H的优先级会破坏实时任务的紧迫性定义,也没有让L更快释放资源。 | 看到该词不要急着选,先判断是否真正解决题干问题 |
| 在 L 持锁期间临时继承 H 的优先级,释放锁后恢复原优先级 | 本题正确答案 | 正确。L临时继承阻塞任务的较高优先级,可减少中优先级任务造成的额外延迟。 | 看到题干核心场景时优先联想到它 |
| 让任务 M 同时获得同一把互斥锁 | 本题干扰项 | 错误。互斥锁的目的就是避免多个任务同时进入受保护临界区。 | 看到该词不要急着选,先判断是否真正解决题干问题 |
| 关闭任务切换,系统以后只运行任务 L | 本题干扰项 | 错误。长期禁止任务切换会破坏并发与实时响应,不是正常的资源访问协议。 | 看到该词不要急着选,先判断是否真正解决题干问题 |
本题易混淆选项怎么区分
- 永久降低任务 H 的优先级:错误。降低H的优先级会破坏实时任务的紧迫性定义,也没有让L更快释放资源。
- 让任务 M 同时获得同一把互斥锁:错误。互斥锁的目的就是避免多个任务同时进入受保护临界区。
- 关闭任务切换,系统以后只运行任务 L:错误。长期禁止任务切换会破坏并发与实时响应,不是正常的资源访问协议。
知识点详解
实时系统关注最坏响应时间。低优先级任务持有高优先级任务所需的互斥资源时,高任务会发生直接阻塞;若中优先级任务还能抢占低任务,阻塞时间可能被进一步拉长。优先级继承协议让资源持有者临时获得等待者中的较高优先级,完成临界区并释放资源后恢复。它能缓解无界反转,但设计仍需控制临界区长度、嵌套锁和死锁风险。
备考速记
H等L,M又压L;让L临时借H的优先级,先还锁再恢复。
实时调度在实时调度场景中的作用
实时调度在本题中的核心价值,是解决“实时系统中,低优先级任务 L 持有互斥锁,高优先级任务 H 申请该锁后阻塞。此时不使用该锁的中优先级任务 M 不断抢占 L,使 H 长时间无法继续。较合适的缓解机制是()”这个场景问题。复习时不要只背选项名称,还要理解它为什么适用于该场景,以及它能解决哪类安全、流程或管理问题。
同类题怎么考
- 根据高、中、低任务时间线识别优先级反转。
- 判断优先级继承发生和撤销的时机。
实时调度在嵌入式系统设计师软考中的考法
软考选择题通常不会只考概念定义,还会把实时调度放到实时调度场景中,要求判断它的作用、适用范围或与相近概念的区别。遇到这类题时,先抓住题干中的业务场景,再看哪个选项最能解决该场景下的核心问题。
解题思路
按时间线看最清楚:L 先拿锁,H 后来要锁却只能等;本来只需等 L 很短时间,M 却因为优先级高于 L,一次次把 L 赶下 CPU,结果 H 也跟着等。优先级继承就是让 L 在这段持锁时间里“代替 H 着急”,先把临界区做完。锁一释放,L 的临时优先级就撤销。
考点定位
优先级反转不是调度器把优先级数字写反了,而是高优先级任务间接被低优先级任务阻塞,并被无关的中优先级任务延长等待。
易错提醒
- 临界区里执行耗时I/O,让继承后的高优先级占用持续过久。
- 任务嵌套持有多把锁,却没有统一锁顺序和协议。
- 释放锁后未正确撤销临时提升,导致后续调度异常。
备考提示
- 画出L持锁、H阻塞、M抢占、L释放四个时刻,再看继承前后差别。
- 把优先级继承与优先级天花板分别记住适用条件,不要只背名称。
你可能还想了解
- 优先级反转和普通阻塞有什么区别?
- 优先级继承什么时候恢复原优先级?
- 优先级继承能否完全避免死锁?
本文小结
优先级反转中,高优先级任务等待低优先级任务的锁,中优先级任务又持续抢占低任务。优先级继承可让持锁者临时提升优先级,尽快释放资源。