为什么 RTOS 没有任何实现来防止信号量的优先级反转,即使它存在于互斥体中。
信号量不需要防止优先级倒置吗?
同样的情况发生在 uC/OS 和 GreenHills RTOS 上。
提前致谢。
为什么 RTOS 没有任何实现来防止信号量的优先级反转,即使它存在于互斥体中。
信号量不需要防止优先级倒置吗?
同样的情况发生在 uC/OS 和 GreenHills RTOS 上。
提前致谢。
当低优先级任务拥有一个信号量时,优先级反转发生,而高优先级任务被迫等待该信号量,直到低优先级任务释放它。如果在释放信号量之前,低优先级任务被一个或多个中等优先级任务抢占,则由于高优先级任务的延迟不再可预测,因此发生了无限优先级反转。这击败了截止日期单调分析 (DMA),因为无法预测高优先级任务是否会在截止日期前完成。
在高优先级和低优先级任务之间共享关键资源并不是一种理想的设计实践。最好只在同等优先级的任务之间共享资源,或者将资源访问限制为单个资源服务器任务。示例是打印服务器任务和文件服务器任务。我们长期以来一直提倡这种做法。然而,随着越来越多样化和复杂的中间件在 RTOS 上的分层,实施这种简单的策略变得不切实际。因此,为了安全起见,最好实现一些防止无限优先级反转的方法。
在http://www.smxrtos.com/articles/techppr/mutex.htm查看完整链接
问候,
奥塔康