Linux系统编程(5):system-V IPC 信号量

提示:本章主要讲解进程信号量的内容,如非特别说明,“信号量”均表示system-VIPC信号量 , 这主要是为了区分后续章节的“POSIX信号量”。

1. 进程信号量基本概念

信号量与已经介绍过的信号、管道、FIFO以及消息列队不同, 它本质上是一个计数器,用于协调多进程间对共享数据对象的读取,它不以传送数据为主要目的, 它主要是用来保护共享资源(信号量也属于临界资源),使得该临界资源在一个时刻只有一个进程独享。 可能会有同学问了,为什么不使用全局变量呢?那是因为全局变量并不能在进程间共同使用, 因为进程间是相互独立的,而且也无法保证引用计数的原子操作,因此使用系统提供的信号量即可。

2. 信号量的工作原理

由于信号量只能进行两种操作等待发送信号,即P操作和V操作,锁行为就是P操作,解锁就是V操作, 可以直接理解为P操作是申请资源,V操作是释放资源。 PV操作是计算机操作系统需要提供的基本功能之一,它们的行为是这样的:

  • P 操作:如果有可用的资源(信号量值大于0),则占用一个资源(给信号量值减去一,进入临界区代码); 如果没有可用的资源(信号量值等于 0),则阻塞,直到系统将资源分配给该进程(进入等待队列,一直等到资源轮到该进程)。 这就像你要把车开进停车场之前

  • 26
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值