信号量可以分三种:互斥信号量,二值信号量,计数信号量。
为什么有的书上讲,只有互斥信号量才会有优先级反转问题?
比如,现在有一个计数信号量S,数值为3,有三个低优先级的任务对其执行P(S)操作,此
时信号量的值为0.如果有一个高优先级的任务到来,并且执行P(S),那么此时也将产生优先
级反转问题。我觉得此时可以将三个低优先级任务中的一个提升到高优先级。
所以,我觉得信号量都会产生优先级反转问题,而不仅仅是互斥信号量,因为他们之间的区
别仅仅是初始值不同。不知我的理解是否有错误?
优先级反转的原因是临界资源被低优先级任务占用而导致高优先级任务阻塞,所以没有必要盯着信号量不放。
只要高优先级任务有可能得不到低优先级占用的临界资源而被阻塞,都有可能会造成反转,不需要管造成资源得不到的原因是信号量还是其他什么原因。
区别仅仅是初始值不同
这个不大苟同,只是觉得应该是从使用还有获取方式上区别
因为只有互斥信号量才可能在任务调度时引起系统死锁,因此互斥信号量的操作才会涉及到优先级反转。
系统死锁和优先级反转两个概念都是与任务调度有关的。