搜索
bottom↓
回复: 1

以停车场运作系统来形象说明对信号量的操作

[复制链接]

出0入0汤圆

发表于 2010-5-1 15:32:50 | 显示全部楼层 |阅读模式
信号量是最常用的进程间的通信手段之一,确切的说,信号量是实现对某些临界资源的访问,用来在进程间进行互斥和同步的一种机制。递增信号量,递减信号量,等待信号量的操作可以用一个简单的停车场运作例子来说明
   假设停车场只有3个车位,一开始3个车位都是空的(通过调用建立信号量函数OSSemCreat(),将其赋予初始值3并初始化等待信号量的任务列表),这是如果同时来了5辆车(有五个任务等待信号量),看门人仅允许其中3辆不受阻碍地进入(对于UC/OS-II,让等待信号量列表中优先级高的三辆。),进入的时候每位车主在登记处拿一个停车许可证(获得资源后,任务对信号量减一以便让那些排队等候的暂时不能进来的车主知道还有多少个车位(还有多少可用资源),因为进来三辆车,所以停车许可证被拿完了(信号计数值为0),然后看门人放下车拦,剩下的车则必须在入口等待,以后来的也要再门口等(因为没有资源可用了或者信号量无效).在等待的过程中,有一辆车离开了(释放信号量)然后把许可证放回登记处(信号量加1)。这时因为有一个车位(资源)看门人就让等待的车中优先级最高的那辆车进入。然后那辆进入的车的车主又拿那个许可证,以表示:车位被我占了,又少了一个,而且现在没了,你们后面的慢慢等待吧。后面的车主也给得到车位的车主们答复:别着急,我等你们的车出来,但也有个时间限制,如果你们的车实在呆得太久了我就不耐烦,我就不等了。在这个停车场系统中,车位是公共资源,每辆车好比一个任务,看门人起的就是看管信号量,允许任务共享资源的作用,而许可证就是
信号量。

大家觉得我的理解怎么样啊?如果不对,那错在哪里

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

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

出0入4汤圆

发表于 2011-9-21 10:29:35 | 显示全部楼层
解释得很通俗,易懂。

信号量还有一种要二值,即(1和0,或真和假)
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-16 10:52

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

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