PV操作

 

PV操作弄得我好糊涂。。。

下面是一些理解,不知道是否正确,还望大家指正。

前提:PV操作的目的是为了防止多个进程同时访问相同的变量。

用书面上的语言来解释PV操作,就是:PV操作有两个操作——P操作和V操作组成;

P操作:将信号量S减去1,若结果小于0,则将调用PS)的进程置成等待信号量S的状态

V操作:将信号量加上1,若结果不大于0,则释放一个等待信号量S的进程。(在此释放一个等待信号量S的进程理解为:有进程在等待执行。若结果大于0,则表示没有进程在等待)

注:信号量表示可以利用的资源,若有等待 则表示为负数。

用更直观的解释可以用两个实例分别表示:

首先,分别解释什么是PV操作:

对于只有一个信号量控制的操作:

就拿上下车来说,车里所能容纳的人数就是信号量S,如果有人要上车首先要确定还有没有座位,确定有没有座位的操作就是P操作,若有则上车(运行),没有则等待。当这个人下车的时候就执行V操作,释放一个座位资源。

对于两个信号量控制的操作:

拿父亲和儿子放苹果和拿苹果来说,父亲和儿子的操作是并发的,这里通过盘子来解耦。父亲将苹果放到盘子里,儿子从盘子里拿走苹果。在父亲放苹果之前要进行P操作:P(S),即检验盘子是否有空间来让自己放苹果,若有空间则将苹果放到盘子里,并通知儿子去拿苹果,进行V操作:VS子),若没有空间则等待。与此同时,儿子要执行拿苹果的操作,之前进行P操作:PS子),若盘子内有苹果则执行拿苹果的操作,并通知父亲可以放苹果了,进行V操作:VS父)。若没有苹果则儿子等待。

父亲和儿子信号量的的初值分别为S=盘子内所能容纳的苹果数,由于初始盘子内没有苹果,且儿子在等待拿苹果,所以儿子信号量的初值为S=-1

在父亲和儿子对苹果进行操作的情况下:当且仅当盘子内只能容纳一个苹果时,父亲和儿子进行操作位两个同步的进程。

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值