一、核心口诀

前驱执行完,V 一下通知后继
后继开始前,P 一下等待前驱
一条前驱边 = 一个信号量
多前驱要 P 多个,多后继要 V 多个

二、解题步骤

步骤 1:画依赖表(看前驱图)

表格

进程

前驱(必须等谁)

后继(要通知谁)

P1

无(源头)

P2、P3

P2

P1

无(图中没画后继)

P3

P1

P4

P4

P3

无(终点)

信号量分配(每条边一个信号量):

  • S1:P1 → P2(P1 通知 P2 用)

  • S2:P1 → P3(P1 通知 P3 用)

  • S3/S4:题目给了 4 个信号量,图中显示 P2 后有 V(S3),P3 后有 V(S4),P4 前有 d

步骤 2:填 PV 操作

表格

位置

操作逻辑

填写内容

a(P1 执行后)

P1 要通知 P2 和 P3 开始

V(S1) V(S2)(发两个信号)

b(P2 执行前)

P2 要等待 P1 完成

P(S1)(收 P1 的信号)

c(P3 执行前)

P3 要等待 P1 完成

P(S2)(收 P1 的信号)

d(P4 执行前)

P4 要等待 P3 完成

P(S4)(因为图中 P3 执行后给了 V(S4))