訊號量的 P V 為什麼要這麼命名

2021-09-27 00:14:15 字數 858 閱讀 6555

有沒有人跟我一樣,在學習訊號量的時候,曾經問過自己這麼乙個問題:

訊號量的 p/v 操作,為什麼要這麼命名

p 代表了哪個單詞,v 又代表了哪個單詞。問了自己之後,彷彿又找不到對應的英文單詞能夠方便記憶,於是乎只能通過死記硬背來記住。

直到,我看到了《linux程式設計(第四版)》第 14 章,才知道了真正的答案(以下摘自第 14.1 章節):

訊號量的乙個更正式的定義是:它是乙個特殊變數,只允許對它進行等待(wait)和傳送訊號(signal)這兩種操作。因為在 linux 程式設計中,「等待」 和 「傳送訊號」 都已具有特殊的含義,所以我們將用原先定義的符號來表示這兩種操作

p(訊號量變數):用於等待。

v(訊號量變數):用於傳送訊號。

這兩個字母分別來自於荷蘭語單詞 passeren(傳遞,就好像位於進入臨界區域之前的檢查點)和 vrijgeven(給予或釋放,就好像放棄對臨界區域的控制權)。

也就是說,p 來自於荷蘭語 passeren,意味著進入臨界區域,v 來自於荷蘭語 vrijgeven,意味著放棄臨界區域。

那麼問題由來了,為啥是荷蘭語呢?

因為訊號量的概念就是荷蘭計算機科學家 edsger dijkstra 提出來的,訊號量的概念是併發程式設計領域的一大重大的進步。

可能有人會覺得 dijkstra 非常的熟悉,彷彿就好像是 dijkstra 演算法的命名,是的,就是他,就是那個迪傑特斯拉演算法的作者,也就是他提出來了訊號量!!!

很有趣吧,你會發現,電腦科學領域裡面的哪怕是乙個技術的慣用命名,都有著深厚的歷史淵源。偶爾去探索一下,都會發現不少有趣的資訊。

to be stronger:)

執行緒的訊號量 PV操作

p v操作 p操作 p代表prolagen,由proberen te verlagen 演變而來,意思是嘗試減小。v操作 v代表verhogen 意思是增加。pv操作主要是針對資源而言的,對資源進行p v操作,來控制線程的同步,互斥等動作。兩種訊號量 二進位制訊號量 數值訊號量 其中二進位制訊號量相...

PV操作訊號量的設定

pv操作與訊號燈的處理相關,p表示通過的意思,v表示釋放的意思。所謂訊號燈即訊號量,實際上就是用來控制程序狀態的乙個代表某一資源的儲存單元。訊號量sem是一整數,sem大於等於零時代表可供併發程序使用的資源實體數,但sem小於零時則表示正在等待使用臨界區的程序數。一般需要設定訊號量的 事物 是公共資...

訊號量中的PV操作

一 訊號量的概念 1 訊號量的型別定義 訊號量 semaphore 的資料結構為乙個值和乙個指標,指標指向等待該訊號量的下乙個程序。訊號量的值與相應資源的使用情況有關。當它的值大於0時,表示當前可用資源的數量 當它的值小於0時,其絕對值表示等待使用該資源的程序個數。注意,訊號量的值僅能由pv操作來改...