信號量機制

信號量機制

(2)若S減1后仍大於或等於零,則進程繼續執行;信號量機制分 信號量集的定義:

目錄

正文


1965年,荷蘭學者Dijkstra提出了利用信號量機制解決進程同步問題,信號量正式成為有效的進程同步工具,現在信號量機制被廣泛的用於單處理機和多處理機系統以及計算機網路中。
信號量S是一個整數,S大於等於零時代表可供併發進程使用的資源實體數,但S小於零時則表示正在等待使用臨界區的進程數。
Dijkstra同時提出了對信號量操作的PV原語。
P原語操作的動作是:
(1)S減1;
(2)若S減1后仍大於或等於零,則進程繼續執行;
(3)若S減1后小於零,則該進程被阻塞後進入與該信號相對應的隊列中,然後轉進程調度。
V原語操作的動作是:
(1)S加1;
(2)若相加結果大於零,則進程繼續執行;
(3)若相加結果小於或等於零,則從該信號的等待隊列中喚醒一等待進程,然後再返回原進程繼續執行或轉進程調度。
PV操作對於每一個進程來說,都只能進行一次,而且必須成對使用。在PV原語行期間不允許有中斷的發生。
信號量機制分 整型信號量機制、記錄型信號量機制、and型信號量機制、信號量集。
整型信號量是一種最簡單的信號量,主要用於解決併發程序互斥訪問臨界資源問題。
記號信號量在整型信號量的舉出上進行了改進,讓不能進入臨界區的進程“讓權等待”,即進程狀態有運行轉換為阻塞狀態,進程進入阻塞隊列中等待。
AND型信號量集是將進程在運行中所需要的臨界資源全部一次性分配給進程,等進程用完后再全部一次釋放。
信號量集的定義:
1.用s1、s2、...sn分別表示有n類裂解資源信號量;
2.用d1、d2、...dn分別表示進程需要的每類臨界資源個數;
3.用t1、t2、...tn分別表示每類臨界資源分給進程的下限值;