打印
[uCOS/RTOS]

优先级反转的一点小疑惑

[复制链接]
949|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
这两天看任哲ucosII有点疑惑。书上说互斥信号量有优先级反转的问题,但是信号量好像也有优先级反转的问题。
假设这个事件是信号量CNT=2,最开始是任务D先占用这个资源后CNT=1,然后任务C又占用一次CNT=0。
接着任务A又要占用该资源,但是资源占用数量已经满了,只能等待。CPU回到任务C,还没等释放资源,
任务B又抢占了CPU,而任务B并不用到该资源,所以直接执行。此时就发生了优先级反转。
  我上面说的这种情况应该算是一种极端的情况吧。书上并没有提到这个问题,或者是我哪里理解错误了,

请大家多指教

相关帖子

沙发
john_lee| | 2015-11-18 23:29 | 只看该作者
光看同步对象的名称并不能决定它是否具有防优先级反转的功能,还是要认真看所使用的系统的API资料来选择适合的同步对象。

使用特权

评论回复
板凳
JasonWangSE| | 2015-12-10 15:51 | 只看该作者
说一下我的理解:理论上说你描述的情况是存在的,不过关键还是看应用场景。一般来说互斥信号量主要用作资源的互斥访问,计数信号量主要用于监控资源的使用情况。
举个栗子,有一个硬件设备内部有多个buffer,驱动程序中可以用计数信号量来控制对buffer的读写,但驱动访问这个硬件设备的时候就已经先获取了设备对应的互斥信号量;只有获得了互斥信号量,接下来读写buffer的时候才会去获取计数信号量。
相当于计数信号量外层会有一个互斥信号量做保护,所以只要使用方**确,这种情况也就不会发生了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

85

帖子

2

粉丝