PV操作-单缓冲区生产者消费者问题

PV操作-单缓冲区生产者消费者问题

开始学操作系统,这个地方难住了。

首先说什么是PV操作,这里P、V、S分别代表什么?

S代表系统的资源

P操作:S=S-1;当S>=0时,可以继续P操作,即申请资源;S<0时,中断CPU,保留现场,进程变为阻塞状态,进程的PCB表放入等待队列中。(PCB表示什么也不是很懂?)
V操作:S=S+1;当S>0时,可以继续V操作,即释放资源,S<=0,从等待队列中唤醒一个进程,变成就绪状态,并将其PCB表插入就绪队列.

综上:P操作会引起进程阻塞;类比过来,V操作可以解封进程。
生产者消费者图片

S1,市场中的产品,初始值为1.
S2,生产出来的产品,初始值为0.

生产者进程:
生产者生产一个产品;
P(S1);
送产品到缓冲区
V(S2);

个人对以上操作的理解:生产者生产完一个产品,消费者首先得申请市场(缓冲区)的产品,即P(S1),S1=S1-1;消费者申请完了,缓冲区里边没产品了,生产者再送自己的产品到市场(缓冲区)中,然后生产者自己再生产一个产品,即V(S2),也就是S2=S2+1;

消费者进程:
P(S2);
从缓冲区取一个产品;
V(S1);
消费者消费一个产品;

个人对以上操作的理解:消费者想从市场中买产品,市场中得有产品啊,即先把生产出来的产品放到市场中P(S2),S2=S2-1; 然后消费者从市场中取一个产品,此时市场中没产品了,需要释放出一个产品到市场中来,即V(S2),S2=S2+1;消费者把自己的产品再消费掉。

当缓冲区已满,生产者还想送产品到缓冲区,就让生产者休眠,待消费者从缓冲区取产品后再去唤醒生产者。同理,当缓冲区没有商品,消费者还想从缓冲区取产品,就让消费者休眠,待生产者向缓冲区放产品后,再去唤醒消费者。

以上就是一个PV操作的同步模型,还不是特别百分百的理解,其实以上都是从其他博客大牛中摘的精髓,作为一个外行,没学过操作系统的人,还需要继续学习,深入理解,也欢迎各位技术大牛给出指导,感谢

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疯狂的Alex

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值