搜索
bottom↓
回复: 12

UCOS系统中信号量学习疑问

[复制链接]

出0入0汤圆

发表于 2017-2-23 17:52:13 | 显示全部楼层 |阅读模式
基于优先级抢占式实时操作系统:

信号量可以分三种:互斥信号量,二值信号量,计数信号量
为什么有的书上讲,只有互斥信号量才会有优先级反转问题?

比如,有任务A,B,C,D,E,优先级A>B>C>D;  其中某资源S只能被3个任务同时进行操作,运用3值信号量进行同步,A,C,D,E需要操作该资源,假如某一时刻C,D,E占用了信号量,A由于无法得到信号量而阻塞,这时B由于优先级较高抢占了CPU,如果B的操作时间较久,那么最高优先级的任务A的实时性是不是受到影响,该种情况是不是优先级反转?

信号量是不是都会产生优先级反转问题?

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入8汤圆

发表于 2017-2-24 09:40:48 | 显示全部楼层
优先级反转,都会发生。
你说的,就是这样。

而书上的概念,应该是要描述为这样:
应该是只有互斥信号量,也就是 mutex,才能避免优先级反转的问题。

二值信号量、计数信号量,都是 semaphore。
semaphore 与 mutex 的主要区别在于,mutex 持有 owner thread 的信息,而 semaphore 什么也没有。
只有持有 owner thread 的信息时,才能避免优先级反转,即通过主动提高 owner thread 的优先级,来避免中间优先级的 thread 抢占。

出0入0汤圆

发表于 2017-2-25 21:56:27 来自手机 | 显示全部楼层
帮顶,现在也在学rtos

出0入0汤圆

发表于 2017-2-26 17:07:35 | 显示全部楼层
本帖最后由 出其而亮 于 2017-2-26 17:12 编辑

比如,有任务A,B,C,D,E,优先级A>B>C>D;  其中某资源S只能被3个任务同时进行操作,运用3值信号量进行同步,A,C,D,E需要操作该资源,假如某一时刻C,D,E占用了信号量,A由于无法得到信号量而阻塞,这时B由于优先级较高抢占了CPU,如果B的操作时间较久,那么最高优先级的任务A的实时性是不是受到影响,该种情况是不是优先级反转
-->是的
只有互斥信号量才会反转,正常信号量,高优先级的任务在收到信号量后,在最新一次任务调度就可以获取cpu权限,而不需要等低优先级任务释放信号量。
互斥信号量其实有点像互斥锁,主要用来锁定独占资源,防止多任务同时访问,导致资源异常!

出0入8汤圆

发表于 2017-2-27 09:40:37 | 显示全部楼层
本帖最后由 security 于 2017-2-27 09:53 编辑
出其而亮 发表于 2017-2-26 17:07
比如,有任务A,B,C,D,E,优先级A>B>C>D;  其中某资源S只能被3个任务同时进行操作,运用3值信号量进行同步, ...



我觉得你说的有问题。

互斥信号量,其实是互斥锁。
你说的这种应该是,二值信号量其实有点像互斥锁。

关于只有互斥信号量才会反转的说法,看我在下一楼贴出的英文原文吧。

出0入8汤圆

发表于 2017-2-27 09:44:45 | 显示全部楼层
本帖最后由 security 于 2017-2-27 09:52 编辑

楼主同学,发完贴就不来了,
不过,我还是给楼主同学,贴几个官方的英文原文吧,不要尽信书,后续看到的时候,阅读理解看看,难度系数不高。

Typically, two types of semaphores exist: binary semaphores and counting semaphores.

Semaphores are subject to a serious problem in real-time systems called priority inversion.

μC/OS-III supports a special type of binary semaphore called a mutual exclusion
semaphore (also known as a mutex) that eliminates unbounded priority inversions.


However, if there are deadlines to meet, you should use a mutex prior to accessing shared
resources. Semaphores are subject to unbounded priority inversions, while mutex are not.

出0入0汤圆

发表于 2017-3-8 17:49:15 | 显示全部楼层
本帖最后由 出其而亮 于 2017-3-8 18:32 编辑
security 发表于 2017-2-27 09:44
楼主同学,发完贴就不来了,
不过,我还是给楼主同学,贴几个官方的英文原文吧,不要尽信书,后续看到的时 ...


嗯,看了这段话,再仔细理解你的意思。
我觉得你的说法没错,但书上说的也没有错。

首先源码里可以直观的看到,只有互斥信号量才会改变原先预设的优先级,而其他信号量不会。
关键是看对“优先级反转”这几个字的理解。
如果理解为因为要等待信号量,不能执行接下来的代码,而此时让出了CPU权限给了比自己低优先级的任务,即“改变了按预设优先级执行”,你说的没错。
而如果理解为“改变了调度表里预置的优先级”,那书上说的就没错。
简单的说就是,只有互斥信号量才会暂存当前任务的优先级,以在临时改变当前任务优先级后恢复时用

另外,关于互斥信号量和二值信号量的关系,应该是互斥信号量是一种特殊的二值信号量。所以我觉得互斥锁从概念上更接近互斥信号量,至于从实现上就看有没有实现优先级反转了。
最后 楼主可能已经领会了,所以不来了^_^。

出0入8汤圆

发表于 2017-3-9 09:20:20 | 显示全部楼层
出其而亮 发表于 2017-3-8 17:49
嗯,看了这段话,再仔细理解你的意思。
我觉得你的说法没错,但书上说的也没有错。

我想关于「优先级反转」这个术语,我们还是要遵循 computer science 的定义,而不要自己重新发明。
我贴一段来自 https://en.wikipedia.org/wiki/Priority_inversion 的定义:
In computer science, priority inversion is a problematic scenario in scheduling in which a high priority task is indirectly preempted by a lower priority task effectively "inverting" the relative priorities of the two tasks.

出0入0汤圆

发表于 2017-3-9 11:42:13 | 显示全部楼层
security 发表于 2017-3-9 09:20
我想关于「优先级反转」这个术语,我们还是要遵循 computer science 的定义,而不要自己重新发明。
我贴 ...

嗯,明白了,互斥信号量的这种做法确是应该解释为“避免优先级反转的问题”。

出0入0汤圆

 楼主| 发表于 2017-3-11 11:39:55 | 显示全部楼层
我其实想知道就是如果存在我说的这种情况,信号量是不是就会产生优先级反转问题? 这样的话是不是都要用互斥信号量才能解决?

出0入8汤圆

发表于 2017-3-11 20:29:46 来自手机 | 显示全部楼层
ajiejie 发表于 2017-3-11 11:39
我其实想知道就是如果存在我说的这种情况,信号量是不是就会产生优先级反转问题? 这样的话是不是都要用互 ...

是的,这就是优先级反转。
优先级反转是很常见的,只是多数情况下,反转时间很短,实时性不受影响。
对于你说的这些同步对象,只有 mutex 能避免优先级反转。

出0入0汤圆

 楼主| 发表于 2017-3-12 15:15:43 | 显示全部楼层
ajiejie 发表于 2017-3-11 11:39
我其实想知道就是如果存在我说的这种情况,信号量是不是就会产生优先级反转问题? 这样的话是不是都要用互 ...

明白了,多谢了

出0入8汤圆

发表于 2017-3-13 10:10:15 | 显示全部楼层
ajiejie 发表于 2017-3-12 15:15
明白了,多谢了


楼主同学,我就认为你这条是回复我在 11 楼的言论了。
如果是这样的话,你看出问题了没?
你没有正确回复到对应的楼层,只是回复了你自己。
这样的话,别人是看不到消息的,不知道发生了什么,帖子很快就会沉下去的,
刚好我最近比较扯淡,瞄了一下我的回复,看到此贴有更新,就进来看了一下。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 10:38

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表