揭秘!基于RT-Thread探究“优先级反转”下的任务调度究竟是什么样的?| 技术集结
本文将基于RT-Thread,结合 RT-Trace 调试器细化到实际任务调度的粒度,来调试并逐步讲解“优先级反转”的调度和运行逻辑。如果对 RT-Trace 感兴趣的可以看这篇文章:
国产嵌入式调试器之光? RT-Trace 初体验!
废话不多说,我们直接开始。本文基于 RT-Thread 来编写测试代码。在此之前我们先捋一下代码流程:
优先级反转问题的本质是高优先级任务因等待低优先级任务释放资源而被阻塞,同时又有其他中优先级任务抢占了 CPU,使得低优先级任务得不到执行机会,进而导致高优先级任务长时间无法继续运行。
因此我们需要建立三个不同优先级的任务,然后需要有一个资源锁来模拟实际场景下