作業系統訊號量問答 #1



問題:解釋訊號量並寫一個簡短的說明。

答案:Dijkstra提出了一種重要的技術,用於管理複雜互斥問題的併發程序。他引入了一種新的同步工具,稱為訊號量。

訊號量分為兩種型別:

  1. 二元訊號量

  2. 計數訊號量

二元訊號量只能取值 0 & 1。計數訊號量可以取非負整數。

在訊號量上定義了兩個標準操作,wait 和 signal。進入臨界區由 wait 操作控制,退出臨界區由 signal 操作控制。wait 和 signal 操作也稱為 P 和 V 操作。訊號量 (S) 的操作如下:

  1. wait 命令 P(S) 將訊號量值減 1。如果結果值變為負數,則 P 命令被延遲,直到條件滿足。

  2. V(S) 即 signal 操作將訊號量值加 1。

在 P(S) 和 V(S) 內強制執行訊號量的互斥。如果多個程序同時嘗試 P(S),則只允許一個程序繼續,其他程序將等待。這些操作定義如下:

P(S) or wait(S): 
If S > 0 then
   Set S to S-1
Else
   Block the calling process (i.e. Wait on S)

V(S) or signal(S): 
If any processes are waiting on S
   Start one of these processes
Else
   Set S to S+1

訊號量操作實現為作業系統服務,因此 wait 和 signal 本質上是原子的,即一旦開始,這些操作的執行就不能中斷。

因此,訊號量是一種簡單而強大的機制,可以確保併發程序之間的互斥。

廣告