訊號量與PV操作

2021-08-10 08:36:52 字數 1279 閱讀 6791

1、訊號量

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

訊號量s表示了作業系統中資源與請求該資源程序的供求關係。

我們可以假設作業系統中某資源為某倉庫的貨物,而請求資源的的程序就是借用貨物的消費者,當我們把貨物(資源)盡可能地分配給消費者(程序)後,消費者使用過後要歸還貨物,以便之後的消費者借用。

當貨物量多於消費者時,此時訊號量為正數,表示剩餘貨物量;當消費者多於資源量時,此時訊號量為負數(如-5),表示此時還有5個消費者等待貨物。

2、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操作屬於程序的低階通訊。

利用訊號量和pv操作實現程序互斥的一般模型是:

程序p1 程序p2 …… 程序pn

…… …… ……

p(s); p(s); p(s);

臨界區; 臨界區; 臨界區;

v(s); v(s); v(s);

…… …… …… ……

3、使用pv操作實現程序互斥時應該注意的是:

(1)每個程式中使用者實現互斥的p、v操作必須成對出現,先做p操作,進臨界區,後做v操作,出臨界區。若有多個分支,要認真檢查其成對性。

(2)p、v操作應分別緊靠臨界區的頭尾部,臨界區的**應盡可能短,不能有死迴圈。

(3)互斥訊號量的初值一般為1。

4、使用pv操作實現程序同步時應該注意的是:

(1)分析程序間的制約關係,確定訊號量種類。在保持程序間有正確的同步關係情況下,哪個程序先執行,哪些程序後執行,彼此間通過什麼資源(訊號量)進行協調,從而明確要設定哪些訊號量。

(2)訊號量的初值與相應資源的數量有關,也與p、v操作在程式**中出現的位置有關。

(3)同一訊號量的p、v操作要成對出現,但它們分別在不同的程序**中。

訊號量與PV操作

解決程序同步與互斥問題的機制。一種特殊變數,表現形式是乙個整數semaphore和乙個佇列。s 0時,s表示可用資源的數量。s 0時,已經沒有可用資源,s的絕對值表示當前等待該資源的程序數。s s 1 使用資源,此時如果s 0,則掛起該程序。s s 1 釋放資源,此時如果s 0,從阻塞佇列裡喚醒乙個...

訊號量,PV操作

它從整型訊號量 記錄型訊號量,進而發展為 訊號量集 機制 訊號量集,就是訊號量的集合 現在要用的是記錄型訊號量 1,訊號量幹嘛用的?訊號量 解決程序間同步與互斥問題 2.訊號量的組成 訊號量 分很多種,在此寫記錄型訊號量 record semaphore 訊號量組成 每個訊號量s除乙個整數值s.va...

訊號量同步 P V 操作

訊號是 e.w.dijkstra 在二十世紀六十年代末設計的一種程式設計架構。dijkstra 的模型與鐵路操作有關 假設某段鐵路是單線的,因此一次只允許一列火車通過。訊號將用於同步通過該軌道的火車。火車在進入單一軌道之前必須等待訊號燈變為允許通行的狀態。火車進入軌道後,會改變訊號狀態,防止其他火車...