古詩詞大全網 - 成語故事 - 信號量的物理意義

信號量的物理意義

信號量的物理意義如下:

信號量S>0時,S的數值表示某類可用資源的數目,執行P操作意味著申請分配壹個單位的資源;當S≤0時,表示無資源可用,此時S的絕對值表示信號量S的阻塞隊列中的進程數。執行V操作意味著釋放壹個單位的資源。

信號量(Semaphore),有時被稱為信號燈,是在多線程環境下使用的壹種設施,是可以用來保證兩個或多個關鍵代碼段不被並發調用。在進入壹個關鍵代碼段之前,線程必須獲取壹個信號量;壹旦該關鍵代碼段完成了,那麽該線程必須釋放信號量。

其它想進入該關鍵代碼段的線程必須等待直到第壹個線程釋放信號量。為了完成這個過程,需要創建壹個信號量VI,然後將Acquire Semaphore VI以及Release Semaphore VI分別放置在每個關鍵代碼段的首末端。確認這些信號量VI引用的是初始創建的信號量。

以壹個停車場的運作為例。簡單起見,假設停車場只有三個車位,壹開始三個車位都是空的。這時如果同時來了五輛車,看門人允許其中三輛直接進入,然後放下車攔,剩下的車則必須在入口等待,此後來的車也都不得不在入口處等待。

這時,有壹輛車離開停車場,看門人得知後,打開車攔,放入外面的壹輛進去,如果又離開兩輛,則又可以放入兩輛,如此往復。在這個停車場系統中,車位是公***資源,每輛車好比壹個線程,看門人起的就是信號量的作用。

抽象的來講,信號量的特性如下:信號量是壹個非負整數(車位數),所有通過它的線程/進程(車輛)都會將該整數減壹(通過它當然是為了使用資源),當該整數值為零時,所有試圖通過它的線程都將處於等待狀態。在信號量上我們定義兩種操作:Wait(等待)和Release(釋放)。

當壹個線程調用Wait操作時,它要麽得到資源然後將信號量減壹,要麽壹直等下去(指放入阻塞隊列),直到信號量大於等於壹時。Release(釋放)實際上是在信號量上執行加操作,對應於車輛離開停車場,該操作之所以叫做“釋放”是因為釋放了由信號量守護的資源。