在信号量上下文中 P 和 V 运算的原始含义是什么?

What is the original meaning of P and V operations in a context of a semaphore?

提问人:flashburn 提问时间:4/13/2015 最后编辑:John Saundersflashburn 更新时间:3/1/2022 访问量:26708

问:

有谁知道为什么信号量运算被称为 P 和 V?每次我读到关于信号量的一章时,它都会说如下:

为了让线程获取资源,它执行 P 操作。为了让线程释放资源,它执行 V 操作。

P 和 V 代表什么?为什么它们不被称为等待和信号?

多线程 线程安全 信号量

评论

0赞 Bill 4/13/2015
相关的维基百科页面(en.wikipedia.org/wiki/...)有一个名为“函数名称词源”的部分。简短的解释:有很多人不会使用英语。
0赞 Sbpro 4/24/2020
@Bill:不确定他们是否命名了 P 和 V,因为不是每个人都使用英语——因为无论如何计算机的语言都是英语,而所有的编程语言都是英文的......或者至少他们中的大多数 - 不确定是否有任何书面或使用其他语言。因此,达到学习/研究信号量水平的人不会拘泥于信号/等待的命名,并且需要 P 和 V 来理解/使用它们。这没有多大意义。
0赞 Ruud Helderman 12/14/2022
@Sbpro “计算机的语言是英语。”今天英语的流行只是长期洗牌的结果。在 1960 年代,当 Dijkstra 写他的论文时,情况有所不同。例如,ALGOL 68 在设计时就考虑到了国际化。另请参阅:非基于英语的编程语言。您可能喜欢甚至还有希腊编程语言的事实。

答:

1赞 Rahul Tripathi 4/13/2015 #1

V代表信号,P代表等待。

您可以查看 wiki 了解详细信息。

enter image description here

为什么它们不被称为等待和信号?

我同意比尔的观点,最可能的原因是因为有很多人不使用英语,所以可能正因为如此,它才不被称为等待和信号。

评论

0赞 Sbpro 4/24/2020
不确定他们是否命名 P 和 V,因为不是每个人都使用英语——因为无论如何计算机的语言都是英语,而所有编程语言都是英语......或者至少他们中的大多数 - 不确定是否有任何书面或使用其他语言。因此,达到学习/研究信号量水平的人不会拘泥于信号/等待的命名,并且需要 P 和 V 来理解/使用它们。
42赞 Kris 4/13/2015 #2

Dijkstra 是信号量的发明者之一,他使用了 P 和 V。这些字母来自荷兰语单词 Probeer(尝试)和 Verhoog(增量)。

Смотритетакже: https://cs.nyu.edu/~yap/classes/os/resources/origin_of_PV.html

评论

2赞 paxdiablo 9/23/2021
“Probeer te verlagen”是“尝试减少”。“Verhogen”是增加。
7赞 Lars Quentin 5/31/2020 #3

@Kris答案只是部分正确。

V代表“Verhoog”,P代表“Prolaag”,而不是这里引用的“Probeer”。

Verhoog 可以翻译为“增加”。递减将是“Verlaag”,但为了更好地区分字母,Dijkstra 发明了“Prolaag”这个词。

请参阅原始论文中的命名。

评论

1赞 dbf 7/16/2020
这确实是真的,我是荷兰人,我的教授告诉我,他只是说要防止学生每周就:D的含义问同样的问题ProbeerProlagg
0赞 John Saunders 3/24/2021
“Prolaag”很好。
0赞 caregon 3/1/2022 #4
  • V代表“Verhoog”,可以翻译为“增量”。

  • P 代表“Prolaag”,是荷兰语“probeer verlaag”的虚构词,可以翻译为“尝试减少”。

来源: C# 4.0 释放 https://books.google.es/books?id=TDEsRmRMPNkC&pg=PT2060&lpg=PT2060&dq=prolaag+in+dutch&source=bl&ots=EnxjFiuZTA&sig=ACfU3U0zxBQju4Ob6Wk449Z7XZK_NH4ZSA&hl=es-419&sa=X&ved=2ahUKEwj0lq3FhqX2AhXXhf0HHTqPDbkQ6AF6BAgDEAM