news 2026/4/17 19:26:46

【软考每日一练003】前趋图与 PV 操作全解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【软考每日一练003】前趋图与 PV 操作全解析

【软考每日一练003】前趋图与 PV 操作全解析

一、典例题目

二、 题目解析

1. 信号量设置(按箭头标注)

我们为图中的 5 条边设置信号量:

  • P1→P2P1 \rightarrow P2P1P2:信号量S1S1S1
  • P1→P3P1 \rightarrow P3P1P3:信号量S2S2S2
  • P3→P2P3 \rightarrow P2P3P2:信号量S3S3S3
  • P3→P4P3 \rightarrow P4P3P4:信号量S4S4S4
  • P2→P4P2 \rightarrow P4P2P4:信号量S5S5S5

2. 逐一匹配进程操作

根据“进入 P,退出 V”的原则:

进程位置操作内容逻辑说明
P1a (出口)V(S1),V(S2)V(S1), V(S2)V(S1),V(S2)P1 结束,通知 P2(S1S1S1) 和 P3(S2S2S2)
P2b (入口)P(S1),P(S3)P(S1), P(S3)P(S1),P(S3)P2 开始前,需等待 P1(S1S1S1) 和 P3(S3S3S3)
P2c (出口)V(S5)V(S5)V(S5)P2 结束,通知 P4(S5S5S5)
P3d (入口)P(S2)P(S2)P(S2)P3 开始前,需等待 P1(S2S2S2)
P3e (出口)V(S3),V(S4)V(S3), V(S4)V(S3),V(S4)P3 结束,通知 P2(S3S3S3) 和 P4(S4S4S4)
P4f (入口)P(S4),P(S5)P(S4), P(S5)P(S4),P(S5)P4 开始前,需等待 P3(S4S4S4) 和 P2(S5S5S5)

3. 最终选项核对

  • 第一组 (a, b, c):
    • 匹配结果:V(S1)V(S2)V(S1)V(S2)V(S1)V(S2)P(S1)P(S3)P(S1)P(S3)P(S1)P(S3)V(S5)V(S5)V(S5)
    • 对应图中第一组选项的C
  • 第二组 (d, e, f):
    • 匹配结果:P(S2)P(S2)P(S2)V(S3)V(S4)V(S3)V(S4)V(S3)V(S4)P(S4)P(S5)P(S4)P(S5)P(S4)P(S5)
    • 对应图中第二组选项的A

结论:正确答案是 C、A。

三、 核心概念:什么是前趋图?

1. 定义

前趋图 (Precedence Graph)是一个有向无环图 (DAG)。在操作系统中,它用来描述程序执行的先后顺序。

  • 结点:代表一个进程、一个程序段或一条语句。
  • 有向边:代表两个结点之间的前趋关系。例如P1→P2P1 \rightarrow P2P1P2,表示P1P1P1必须先执行完,P2P2P2才能开始。

2. 什么是前趋进程?

如果存在P1→P2P1 \rightarrow P2P1P2,那么P1P1P1就是P2P2P2的直接前趋,而P2P2P2P1P1P1的直接后继。

简单来说,前趋进程就是“必须先完成的前置任务”。


四、 PV 操作:为什么是“出 V 进 P”?

1. 谁定义的?

这一概念是由计算机科学奠基人之一、荷兰学者艾兹赫尔·戴克斯特拉 (Edsger W. Dijkstra)在 1965 年提出的。

2. 为什么叫 P 和 V?

这两个缩写来自荷兰语:

  • P (Proberen):意为“测试”或“尝试减少”。
  • V (Verhogen):意为“增量”或“释放”。

3. 设计逻辑(重点)

PV 操作的核心是利用信号量 (Semaphore)来进行进程同步。

  • 信号量SSS你可以把它理解为一个“通行证”或“资源计数器”。在本题同步问题中,初值通常设为000
  • P(S)P(S)P(S)操作:相当于“申请/检查”。进程开始前执行PPP,如果S≤0S \le 0S0,进程就会阻塞,直到前趋任务给它发信号。
  • V(S)V(S)V(S)操作:相当于“通知/释放”。进程结束后执行VVV,将SSS111,唤醒正在等待该信号的后继进程。

规则总结:

  • 进程开始处(入口):有几个箭头指进来,就执行几个PPP操作(等待所有前趋任务完成)。
  • 进程结束处(出口):有几个箭头发出去,就执行几个VVV操作(通知所有后继任务可以开始了)。

五、 信号量SxS_xSx的定义与标注

1.xxx是如何定义的?

在解题时,xxx只是一个编号。每一个SxS_xSx代表前趋图中一条特定的“有向边(逻辑连接)”。

2. 标注技巧(实战演练)

针对本题,我们为每一条路径手动标记信号量,确保不重不漏:

  1. P1P1P1出发的边:P1→P2P1 \rightarrow P2P1P2标为S1S1S1P1→P3P1 \rightarrow P3P1P3标为S2S2S2
  2. P3P3P3出发的边:P3→P2P3 \rightarrow P2P3P2标为S3S3S3P3→P4P3 \rightarrow P4P3P4标为S4S4S4
  3. P2P2P2出发的边:P2→P4P2 \rightarrow P4P2P4标为S5S5S5

六、 总结:解题口诀

信号量标在箭头上,

入 P 出 V 莫记混。

入度几个就几个 P,

出度几个就几个 V。


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 22:29:54

“微型应用“兴起:非开发者自主开发应用而非购买现成产品

Rebecca Yu花了七天时间编写了她的餐厅推荐应用。她厌倦了在群聊中因为无法决定去哪里吃饭而产生的选择困难症。凭借决心、Claude和ChatGPT的帮助,Yu决定从零开始构建一个餐厅应用——一个能够基于她和朋友们的共同兴趣推荐餐厅的应用。"一旦随性编程应用出现后…

作者头像 李华
网站建设 2026/4/18 5:33:29

C# 实现 TCP/IP 客户端与服务器数据交互及与西门子 S7 - 200Smart 通讯

C# TCP IP 客户端和服务器工程源码,带注释,里面含有以字节、字、浮点型数据、字符串数据进行数据交互的客户端与服务器源码,可实现中英文字符串实现聊天,本图为与西门子S7-200Smart通讯为例在 C# 的编程世界里,实现 TC…

作者头像 李华
网站建设 2026/4/18 8:17:03

西门子PLC 200Smart与三菱变频器Modbus通讯程序实践

西门子plc与三菱变频器通讯程序 西门子plc200smart与三菱变频器modbus通讯程序,可以帮你学会modbus通讯在自动化控制领域,不同品牌设备之间的通讯协作是常见需求。今天咱们就来聊聊西门子PLC 200Smart与三菱变频器通过Modbus协议进行通讯的程序实现。 M…

作者头像 李华
网站建设 2026/4/18 8:56:09

【计算机毕业设计案例】基于微信小程序的考研资源共享平台的设计与实现基于django+微信小程序的考研信息查询系统(程序+文档+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/4/18 5:42:22

交变磁场下含感应材料沥青路面温度:奇妙的物理与技术融合

交变磁场下含感应材料沥青路面温度在道路工程领域,沥青路面是我们再熟悉不过的存在。然而,你是否想过,通过交变磁场与含感应材料的结合,能让沥青路面的温度产生神奇的变化?这背后蕴含着有趣的物理原理和潜在的应用价值…

作者头像 李华