乐于分享
好东西不私藏

PV 操作完整总结文档

PV 操作完整总结文档

一、PV 操作基础概念

1. 信号量(Semaphore)

信号量是一个整型变量,用于控制进程间同步与互斥。
S > 0:表示可用资源数量
S = 0:表示无资源可用
S < 0:表示有进程在等待

2. P 操作(Wait / Down)

P(S):
S = S – 1
若 S < 0,则进程阻塞
含义:申请资源 / 等待前驱完成

3. V 操作(Signal / Up)

V(S):
S = S + 1
若 S ≤ 0,则唤醒一个等待进程
含义:释放资源 / 通知后继可以执行

二、PV 操作的两大应用


① 进程互斥

场景
多个进程访问同一临界资源。
信号量设置
mutex = 1
标准写法
P(mutex)
临界区
V(mutex)
口诀:

互斥信号量初值为 1


② 进程同步(前驱关系)

本质
用信号量表示“某进程是否执行完成”。

三、前驱图题核心规则(考试重点)


1. 基本原则

原则一

一条箭头 = 一个信号量


原则二

箭头起点写 V箭头终点写 P


原则三

前驱控制信号量初值 = 0


四、典型结构总结


1️⃣ 单链结构

P1 → P2 → P3
设:
S1 控制 P1→P2
S2 控制 P2→P3
写法:
P1: V(S1)
P2: P(S1)
V(S2)
P3: P(S2)

2️⃣ 多分支结构(一个分多个)

→ P2
P1 →
→ P3
设:
S1 控制 P1→P2
S2 控制 P1→P3
写法:
P1: V(S1)
V(S2)
P2: P(S1)
P3: P(S2)
特征:

一个进程多个 V


3️⃣ 汇合结构(多个汇一个)

P1 →
→ P3
P2 →
设:
S1 控制 P1→P3
S2 控制 P2→P3
写法:
P1: V(S1)
P2: V(S2)
P3: P(S1)
P(S2)
特征:

一个进程多个 P


4️⃣ 多分支 + 汇合综合结构

解题步骤:
画出完整前驱图
列出所有箭头
每条箭头一个信号量
起点写 V
终点写 P

五、综合解题标准流程(考试通用模板)


第一步:画前驱关系图
不要直接写 PV。

第二步:统计箭头数量
箭头数量 = 信号量数量

第三步:分配信号量
每条依赖关系独立编号:
S1, S2, S3 …

第四步:写 PV 逻辑
规则:
起点 → V
终点 → P

第五步:检查是否遗漏
分支是否全部 V
汇合是否全部 P
是否写反

六、PV 题常见考点


1. 信号量初值

类型
初值
互斥
1
前驱同步
0
资源数量为 N
N

2. P/V 写反陷阱

P 是等待
V 是通知
口诀:

等别人用 P通知别人用 V


3. 多条依赖共用信号量错误

错误:
P1 → P2
P1 → P3
只用一个 S
正确:
必须两个信号量。

4. 执行顺序判断题

若:
S = 0
执行:
P(S)
进程立即阻塞。

七、PV 与死锁


死锁四个必要条件
互斥
请求保持
不可剥夺
循环等待
若存在:
P(S1)
P(S2)
另一个进程:
P(S2)
P(S1)
可能死锁。

八、常见模型题


生产者消费者模型

empty = N
full = 0
mutex = 1
生产者:
P(empty)
P(mutex)
放入产品
V(mutex)
V(full)
消费者:
P(full)
P(mutex)
取出产品
V(mutex)
V(empty)

九、考试速记口诀


口诀一

一条箭头一信号量


口诀二

起点 V,终点 P


口诀三

分支多 V,汇合多 P


口诀四

互斥初值 1同步初值 0


十、PV 本质总结

在前驱图题中:
信号量本质不是“资源数量”,而是:

“前驱是否执行完成”的标志位。

PV 操作本质是:

用整数变量控制执行顺序。


结语:准备软考,后续不定期更新软考相关知识
本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » PV 操作完整总结文档

评论 抢沙发

5 + 1 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
×
订阅图标按钮