关于posix sem的一些常见的问题
来源:互联网 发布:产品数据分析调研报告 编辑:程序博客网 时间:2024/05/18 01:14
linux中支持很多标准,关于信号量(semaphore )有二种标准给予支持,有posix sem和system V sem ,你要问这是什么东东,那你就去自己baidu一下了,要多活动一下自己的筋骨晓得不 ^_^
首先,我们来说说这二种sem的区别:
posix
1、不能在多个(无关系的)进程间使用
2、只是一个信号量
system V
1、可在多个无关的进程间使用
2、是一个信号量集
还有就是 posix sem操作简单 而system V相对要复杂得多。OK,我们这里主要要说的是posix sem下的二值信号量的处理问题:
信号量机制
1965年,荷兰学者提出了利用信号量机制解决进程同步问题,信号量正式成为有效的进程同步工具,现在信号量机制被广泛的用于单处理机和多处理机系统以及计算机网络中。
信号量S是一个整数,S大于等于零时代表可供并发进程使用的资源实体数,但S小于零时则表示正在等待使用临界区的进程数。
Dijkstra同时提出了对信号量操作的PV原语。(这里为什么是PV二字母喃 ,原来是这个荷兰学者英语学得和我一样差 ???还是和我一样爱国???以至于只能用本国的意思和 wait post这二单词意思差不多的二个以p v 开头的单词 )呵呵
P原语操作的动作是:
(1)S减1;
(2)若S减1后仍大于或等于零,则进程继续执行;
(3)若S减1后小于零,则该进程被阻塞后进入与该信号相对应的队列中,然后转进程调度。
V原语操作的动作是:
(1)S加1;
(2)若相加结果大于零,则进程继续执行;
(3)若相加结果小于或等于零,则从该信号的等待队列中唤醒一等待进程,然后再返回原进程继续执行或转进程调度。
PV操作对于每一个进程来说,都只能进行一次,而且必须成对使用。在PV原语执行期间不允许有中断的发生。
二值信号量:是指 只有0 和 1 这二个值的信号量 也就是说初始值是1或0 我们这里假定 初始值是1 那么 当对其进行wait操作的时候,此值就减一为0了 那么就会阻塞所有的当前进程中的其它的信号 和 信号量;等待post 的到来 ,当post到来后,就释放掉了阻塞,其它的操作就可以运行了。这种方法常常用来实现一个临界区的原子执行,有关原子 执行的概念请看我前面的文章,把想要进行原子操作的代码放到 wait和 post之间,就不会受到其它信号或其它进程或线程对其所作的影响了,这也相当于互斥操作。
- 关于posix sem的一些常见的问题
- sem的一些名词
- 关于java的一些常见小问题
- 对信号量sem的一些总结
- 一些常见的问题
- 关于搜索引擎营销SEM的阶段性总结
- 关于mysql常见的问题(一些常见问题的解决方案)
- 关于Git使用的一些常见的问题
- 关于Posix的信号量
- bootstrap+angular关于js常见的一些问题
- posix 标准的一些查看
- mysql 常见的一些问题
- 常见的一些小问题
- linux常见的一些问题
- 一些常见的面试问题
- 写轮眼常见的一些问题
- 什么是SEM?2017年SEM的发展趋势
- 关于Posix的消息队列
- 第一个Struts2的实例:
- 实验室开放项目(申请表)
- 人生
- Java 笔记-移位运算符
- 自主移动机器人动作设计--目标跟踪及移动轨迹设计(开发日志一)
- 关于posix sem的一些常见的问题
- C# 皮肤
- XML文档的基本操作(一)
- XML文档的基本操作(二)
- DataTable的序列化与反序列化.
- 收集的13个杀毒软件和安全防护软件(有图哦)
- 收集的20个媒体转换软件|视频处理|音频处理(有图哦)
- McAfee (麦咖啡) 360安全卫士 金山毒霸2008正式免费升级版 超级巡警 IceSword(冰刃)
- C/C++面试之算法系列--如何利用数学思想解1/2/5组合问题