PV 操作与案例分析

1. PV 操作与案例分析

PV 操作是一种实现进程互斥与同步的有效方法。PV 操作与信号量的处理相关, P 表示通过的意思, V 表示释放的意思。

PV 操作是典型的同步机制之一。用一个信号量与一个消息联系起来:

  • 当信号量的值为 0 时, 表示期望的消息尚未产生;
  • 当信号量的值非 0 时, 表示期望的消息已经存在。

用 PV 操作实现进程同步时, 调用 P 操作测试消息是否到达, 调用 V 操作发送消息。

1.1. PV 操作的原则

P 操作: 相当于请求资源、输入
V 操作: 相当于释放资源、输出

  • 在单一进程内部, 由 P 操作 —> V 操作

1、 P: 请求到资源 (相当于程序输入)
2、 执行…
3、 V: 释放资源 (相当于程序的输出)

  • 在两个进程之间, 由 V 操作 —> P 操作

1、 V: 一个进程释放了资源
2、 P: 另一个进程可以申请该资源

  • 起始进程: 只有 V 操作(输出), 没有 P 操作(输入)

相当于程序只出不进

  • 终止进程: 只有 P 操作(输入), 没有 V 操作(输出)

相当于程序只进不出

  • 前趋图中信号排序规则: 从左到右、从上到下 , 依次为 1、2、3…

在这里插入图片描述

1.2. 案例分析

1.2.1. 案例一

假设系统中有 n 个进程共享 3 台打印机, 任一进程在任一时刻最多只能使用 1 台 打印机。若用 PV 操作控制 n 个进程使用打印机, 则相应信号量 s 的取值范围为 3 ~ -(n-3); 若信号量 S 的值为 -3, 则系统中有 3 个进程等待使用打印机。

1.2.2. 案例二

1、案例

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、分析

1) 先标信号 S

按照从左到右、从上到下
如果两条线的起点相同, 就比较终点; 终点在上或在前的, 就排在前面

在这里插入图片描述

2) 依次分析每个进程

原则:

  • 初始进程, 只有 V, 没有 P
  • 终止进程, 只有 P, 没有 V
  • 进程内, 从 P 到 V
  • 进程间, 从 V 到 P
  • 一个进程有几个输入, 就有几个 P; 有几个输出, 就有几个 V
  • P1

初始进程: 只有 V
有两个输出 S1、S2, 所以 V 为: V(s1)、V(s2)

在这里插入图片描述

  • P2

一个输入 S1, 两个输出 S3、S4
所以 P 为: P(s1), V 为: V(s3)、V(s4)

在这里插入图片描述

  • P3

两个输入 S2、S3, 两个输出 S5、S6
所以 P 为: P(s2)、P(s3), V 为: V(s5)、V(s6)

在这里插入图片描述

  • P4

两个输入 S4、S5, 一个输出 S7
所以 P 为: P(s4)、P(s5), V 为: V(s7)

在这里插入图片描述

  • P5

一个输入 S6, 一个输出 S8
所以 P 为: P(s6), V 为: V(s8)

在这里插入图片描述

  • P6

终止进程, 只有 P, 没有 V
两个输入 S7、S8
所以 P 为: P(s7)、P(s8)

在这里插入图片描述

3)答案

在这里插入图片描述

1.2.3. 案例三

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

云满笔记

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

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

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

打赏作者

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

抵扣说明:

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

余额充值