【操作系统】PV 操作经典例题---三个进程之间的同步

问题:

总共有 读入、执行、打印 三个进程,试用PV操作描述读入B1打印B2的同步过程。

问题解读:

这个问题就是说了这样一件事:一个输入B1,被操作之后,成为B2,将B2打印。怎样用PV操作来说这件事。那么新的问题来了:啥是个PV操作?

就拿这道题来解释PV操作吧,我想打印一个值,前提条件是这个值存在吧,如果不存在,那么打印这个动作就不应该被执行,不能说啥也没有在那瞎打印吧。那么怎样才能让它不执行呢?

这就需要引入信号量机制了,当一个操作的信号量为负数的话,就会挂起等待,不执行。当一个操作的信号量为1或者大于1的时候,就可以执行。

P操作会使信号量 -1,V操作会使信号量 +1。

解决问题:

按理说,我有三个操作,读入(Reader)、执行(Executer)、打印(Printer),应该对应设置三个信号量R、E、P,对应PV操作流程如下图所示:

解释上图的步骤:

首先,将输入信号量R初始化为1,保证读入进程Reader能够启动。

如果这时候没有从Reader进程开始执行,而是试图执行Executer或者Printer进程,由于信号量E、P初始值都是0,而且一上来就是P操作,所以会使信号量E、P成为 -1,这样进程将会挂起等待,不执行。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值