pv原語的含義
p操作和v操作是不可中斷的程式段,稱為原語.pv原語及訊號量的概念都是由荷蘭科學家e.w.dijkstra提出的.訊號量sem是一整數,sem大於等於零時代表可供併發程序使用的資源實體數,但sem小於零時則表示正在等待使用臨界區的程序數.
p原語操作的動作是:
(1) sem減1;
(2) 若sem減1後仍大於或等於零,則程序繼續執行;
(3) 若sem減1後小於零,則該程序被阻塞後進入與該訊號相對應的佇列中,然後轉程序排程.
v原語操作的動作是:
(1) sem加1;
(2) 若相加結果大於零,則程序繼續執行;
(3) 若相加結果小於或等於零,則從該訊號的等待佇列中喚醒一等待程序,然後再返回原程序繼續執行或轉程序排程.
pv操作對於每乙個程序來說,都只能進行一次,而且必須成對使用.在pv原語執行期間不允許有中斷的發生.
具體理解:
在計算機作業系統中,
pv操作是程序管理中的難點。
p,v原語中
p是荷蘭語的
passeren
,相當於英文的
pass, v
是荷蘭語的
verhoog,
相當於英文中的
increment。
首先應弄清
pv操作的含義:
pv操作由
p操作原語和
v操作原語組成(原語是不可中斷的過程),對訊號量進行操作,具體定義如下: p
(s):①將訊號量
s的值減1,即
s=s-1;
②如果s>=0
,則該程序繼續執行;否則該程序置為等待狀態,排入等待佇列。 v
(s):①將訊號量
s的值加1,即
s=s+1;
②如果s>0
,則該程序繼續執行;否則釋放佇列中第乙個等待訊號量的程序。 pv
操作的意義:我們用訊號量及
pv操作來實現程序的同步和互斥。
pv操作屬於程序的低階通訊。
什麼是訊號量?訊號量(
semaphore
)的資料結構為乙個值和乙個指標,指標指向等待該訊號量的下乙個程序。訊號量的值與相應資源的使用情況有關。當它的值大於
0時,表示當前可用資源的數量;當它的值小於
0時,其絕對值表示等待使用該資源的程序個數。注意,訊號量的值僅能由
pv操作來改變。
一般來說,訊號量
s>=0時,s
表示可用資源的數量
。執行一次
p操作意味著請求分配乙個單位資源
,因此s
的值減1
;當s<0
時,表示已經沒有可用資源,請求者必須等待別的程序釋放該類資源,它才能執行下去。而執行乙個
v操作意味著釋放乙個單位資源
,因此s
的值加1
;若s£0
,表示有某些程序正在等待該資源,因此要喚醒乙個等待狀態的程序,使之執行下去。
利用訊號量和
pv操作實現程序互斥的一般模型是: 程序
p1程序
p2……
程序pn
………………p
(s);p
(s);p
(s);
臨界區;
臨界區;
臨界區; v
(s);v
(s);v
(s);
…………
…………
其中訊號量
s用於互斥,初值為1。
使用pv操作實現程序互斥時應該注意的是: (
1)每個程式中使用者實現互斥的p、
v操作必須成對出現
,先做p
操作,進臨界區,後做
v操作,出臨界區。若有多個分支,要認真檢查其成對性。 (
2)p、
v操作應分別緊靠臨界區的頭尾部,臨界區的**應盡可能短,不能有死迴圈。 (
3)互斥訊號量的初值一般為1。
利用訊號量和
pv操作實現程序同步 pv
操作是典型的同步機制之一。用乙個訊號量與乙個訊息聯絡起來,當訊號量的值為
0時,表示期望的訊息尚未產生;當訊號量的值非
0時,表示期望的訊息已經存在。用
pv操作實現程序同步時,呼叫
p操作測試訊息是否到達,呼叫
v操作傳送訊息。 使用
pv操作實現程序同步時應該注意的是: (
1)分析程序間的制約關係,確定訊號量種類。在保持程序間有正確的同步關係情況下,哪個程序先執行,哪些程序後執行,彼此間通過什麼資源(訊號量)進行協調,從而明確要設定哪些訊號量。 (
2)訊號量的初值與相應資源的數量有關,也與p、
v操作在程式**中出現的位置有關。 (
3)同一訊號量的p、
v操作要成對出現,但它們分別在不同的程序**中。
PCB各層的定義及解釋
1 top layer 頂層佈線層 設計為頂層銅箔走線。2 bomttom layer 底層佈線層 設計為底層銅箔走線。3 top bottom solder 頂層 底層阻焊綠油層 頂層 底層敷設阻焊綠油,以防止銅箔上錫,保持絕緣。在焊盤 過孔及本層非電氣走線處阻焊綠油開窗。焊盤在設計中缺省會開窗 ...
威脅情報的定義及理解
根據gartner對威脅情報的定義,威脅情報是某種基於證據的知識,包括上下文 機制 標示 含義和能夠執行的建議,這些知識與資產所面臨已有的或醞釀中的威脅或危害相關,可用於資產相關主體對威脅或危害的響應或處理決策提供資訊支援。業內大多數所說的威脅情報可以認為是狹義的威脅情報,其主要內容為用於識別和檢測...
原型與原型鏈的理解及解釋
原型和繼承constructor prototype proto 建構函式 例項物件 用來初始化新建立的物件的函式是建構函式。在 c 語言中,類 有乙個建構函式,它與類同名且沒有返回值的 可以不寫,也可過載多個 在 js 中,沒有 類 的概念,原型物件 姑且等同於 類 原型物件有 construct...