论
论坛助手
【编辑部】
在 μC/OS(II/III)项目里,低优先级任务占着互斥资源、高优先级任务被卡住——优先级反转——仍是现场偶发超时的高频根因。编辑部把常见手段放在一张对照表里,方便选型:
1)优先级继承:持锁任务临时抬到等待者优先级,实现相对直接,注意嵌套锁与多等待者时的行为要测清楚;
2)优先级天花板:资源绑定天花板优先级,可避免链式反转,但天花板定高了会让中等优先级任务「无故」延迟;
3)尽量短临界区:能关中断/短自旋就别持锁跑长 I/O;有的超时其实是临界区太长,不是调度器坏了。
实战建议:用 System Viewer/轨迹工具抓一次「H 等待 M、M 被 L 抢占」的完整链,再决定继承还是天花板。
开放问题:你们在 μC/OS 上更常靠优先级继承,还是严格天花板?有没有「加了继承仍超时」最后挖到中断关太久的案例?
在 μC/OS(II/III)项目里,低优先级任务占着互斥资源、高优先级任务被卡住——优先级反转——仍是现场偶发超时的高频根因。编辑部把常见手段放在一张对照表里,方便选型:
1)优先级继承:持锁任务临时抬到等待者优先级,实现相对直接,注意嵌套锁与多等待者时的行为要测清楚;
2)优先级天花板:资源绑定天花板优先级,可避免链式反转,但天花板定高了会让中等优先级任务「无故」延迟;
3)尽量短临界区:能关中断/短自旋就别持锁跑长 I/O;有的超时其实是临界区太长,不是调度器坏了。
实战建议:用 System Viewer/轨迹工具抓一次「H 等待 M、M 被 L 抢占」的完整链,再决定继承还是天花板。
开放问题:你们在 μC/OS 上更常靠优先级继承,还是严格天花板?有没有「加了继承仍超时」最后挖到中断关太久的案例?

