码迷,mamicode.com
首页 > 其他好文 > 详细

IPC---信号量

时间:2016-08-05 23:09:25      阅读:354      评论:0      收藏:0      [点我收藏+]

标签:

一、什么是信号量

信号量的使用主要是用来保护共享资源,使得资源在一个时刻只有一个进程(线程) 所拥有。

信号量的值为正的时候,说明它空闲。所测试的线程可以锁定而使用它。若为0,说明 它被占用,测试的线程要进入就绪队列中,等待被唤醒。

二、信号量的分类
在学习信号量之前,我们必须先知道——Linux提供两种信号量:
(1) 内核信号量,由内核控制路径使用
(2) 用户态进程使用的信号量,这种信号量又分为 POSIX信号量 和 SYSTEM V信号量。


POSIX信号量又分为有名信号量无名信号量

有名信号量,其值保存在文件中, 所以它可以用于线程也可以用于进程间的同步。

无名信号量,其值保存在内存中。

三、POSIX 信号量与SYSTEM V信号量的比较
1. 对POSIX来说,信号量是个非负整数。常用于线程间同步

    而SYSTEM V信号量则是一个或多个信号量的集合,它对应的是一个信号量结构体,这个结构体是为SYSTEM V IPC服务的,信号量只不过是它的一部分。常用于进程间同步

2.POSIX信号量的引用头文件是“<semaphore.h>”,

     而SYSTEM V信号量的引用头文件是“<sys/sem.h>”。

3.从使用的角度,System V信号量是复杂的,

    而Posix信号量是简单。比如,POSIX信号量的创建和初始化或PV操作就很非常方便。

 

 

三.内核信号量

1.内核信号量的构成
  内核信号量类似于自旋锁,因为当锁关闭着时,它不允许内核控制路径继续进行。然而,当内核控制路径试图获取内核信号量锁保护的忙资源时,相应的进程就被挂起。只有在资源被释放时,进程才再次变为可运行。

  只有可以睡眠的函数才能获取内核信号量;中断处理程序和可延迟函数都不能使用内核信号量。

 

。。。。。。。。。。。。。。。

 

 

 

 

参考:

最全面的linux信号量解析     http://blog.csdn.net/qinxiongxu/article/details/7830537/

Linux进程间通信——使用信号量      http://blog.csdn.net/ljianhui/article/details/10243617

IPC---信号量

标签:

原文地址:http://www.cnblogs.com/wujing-hubei/p/5742915.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!