IPC---信号量

一、什么是信号量

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

信号量的值为正的时候,说明它空闲。所测试的线程可以锁定而使用它。若为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

转载于:https://www.cnblogs.com/wujing-hubei/p/5742915.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值