1樓:網友
operating systems design and implementation》中andrew s. tanenbaum對訊號量的描述和以前看過的教材有區別。但其核心思想是類似的。
以前的書上(包括網上不少帖子)是這麼敘述的:
―鬧毀―――
訊號量s是乙個整數,s大於等於零時代表可供併發程序使用的資源實體數,但s小於零時則表示正在等待使用臨界區的程序數。
dijkstra同時提出了對訊號量操作的pv原語。
p原語操作的動作是:
1)s減1;
2)若s減1後仍大於或等於零,則程序繼續執行;
3)若s減1後小於零,則該程序被阻塞後進入與該訊號相對應的佇列中,然後轉程序排程。
v原語操作的動作是:
1)s加1;
2)若相加結果大於零,則程序繼續執行;
3)若相加結果小於或等於零做彎攜,則從該訊號的等待佇列中喚醒一等待程序,然後再返回原程序繼續執行或轉程序排程。
pv操作對於每乙個程序來說,都只能進行一次,而且必須成對使用。在pv原語執行期間不允許有中斷的發生。
說明:要保證pv是原子操作,對於作業系統,只須在操作過程中關中斷即可。
andrew s. tanenbaum對訊號量的定義有所不同,其pv操作也有區別。
訊號量是乙個整數,其值不小於0。它表示被積累下來的喚醒運算元。
p原語操作的動作是:
1) 檢查s是否大於0。
2) 若s>0,則s = s –純伏 1;否則,執行p操作的程序將睡眠,並且此時p操作並未結束。
v原語操作的動作是:
1)s = s + 1。
2)如果乙個或多個程序在該訊號量上睡眠,無法完成先前的p操作,則有系統選擇其中乙個並允許它完成p操作。
andrew s. tanenbaum的觀點認為:當s = 0時,p操作不會馬上結束。其作用(s = s – 1)必須在該程序被喚醒後才能實現。
兩種定義的區別是:
前者定義的pv操作都不會阻塞,而後者中p操作可能被阻塞。
前者的s的初值一般大於0,而後者中,s通常初值為0。
訊號量機制怎麼理解
2樓:科仔又要補
訊號量:訊號量(semaphores)的資料結構由乙個值value和乙個程序連結串列指標l組成,訊號量爛團胡的值代表了資源的數目,連結串列指標鏈結了所有等待訪問該資源的程序。
pv操作:通過對訊號量s進行兩個標準的原子操作(不可中斷的操作)wait(s)和signa(s),可以實現程序的同步和互斥。這兩個操作又常被稱為p、v操作,其定義如下:
p(s):①將訊號量s的值減1,即;
如果,則該程序繼續執行;否則該程序置為等待狀態,排入等待佇列。
v(s):①將訊號量s的值加1,即;
如果》0,或跡則該程序繼續執行;否則釋放中第乙個的飢攔等待程序。
說明:代表可用的資源數目,當它的值大於0時,表示當前可用資源的數量;當它的值小於0時,其絕對值表示等待使用該資源的程序個數。
一次p操作意味著請求分配乙個單位資源,因此減1,當<0時,表示已經沒有可用資源,請求者必須等待別的程序釋放該類資源,它才能執行下去。
而執行一次v操作意味著釋放乙個單位資源,因此加1;若s≤0,表示有某些程序正在等待該資源,因此要喚醒乙個等待狀態的程序,使之執行下去。
訊號量機制是什麼?
3樓:知哥81918恢骨
訊號量的本質是一種資料操作鎖,它本身不具有如謹資料交換的功能,而是通過控制其他的通訊資源(檔案,外部裝置)來實現程序間通訊,它本身只是一種外部資如茄源的標識。訊號量在此過程中負責資料操作的互斥、同步等渣橡察功能。當請求乙個使用訊號量來表示的資源時,程序需要先讀取訊號量的值來判斷資源是否可用。
大於0,資源可以請求,等於0,無資源可用,程序會進入睡眠狀態直至資源可用。當程序不再使用乙個訊號量控制的共享資源時,訊號量的值+1,對訊號量的值進行的增減操作均為原子操作,這是由於訊號量主要的作用是維護資源的互斥或多程序的同步訪問。而在訊號量的建立及初始化上,不能保證操作均為原子性。
4樓:網友
為了防止出現因多個程式毀棗同時訪問乙個共享資源而引發的一系列問題,我們需要一種方法,它可以通過生成並使用令牌來纖祥拆授權,在任一時刻只能有乙個執行程序訪問**的臨界區域。臨界區域是指執行資料更新的**需要獨佔式地執行。而訊號量就可以提供這樣的一種訪問機制,讓乙個臨界區同一時間只有乙個程序在訪問它,也就是說訊號量是用來調協程序對共享資源的訪問的。
宴態訊號量是乙個特殊的變數,程式對其訪問都是原子操作,且只允許對它進行等待(即p(訊號變數))和傳送(即v(訊號變數))資訊操作。最簡單的訊號量是隻能取0和1的變數,這也是訊號量最常見的一種形式,叫做二進位訊號量。而可以取多個正整數的訊號量被稱為通用訊號量。
訊號量的特性
5樓:g_小丶阣
抽象的來講,訊號量的特性如下:訊號量是乙個非負整數(車位數),所有通過它的執行緒/程序(車輛)都會將該整數減一(通過它當然是為了使用資源),當該整數值為零時,所有試圖通過它的執行緒都將處於等待狀態。在訊號量上我們定義兩種操作:
wait(等待) 和 release(釋放)。當乙個執行緒呼叫wait操作時,它要麼得到資源然後將訊號量減一,要麼一直等下瞎豎去(指放入阻塞佇列),直到訊號量大於等於一時。release(釋放)隱磨實際上是磨攜大在訊號量上執行加操作,對應於車輛離開停車場,該操作之所以叫做「釋放」是因為釋放了由訊號量守護的資源。
訊號量機制的介紹
6樓:神仙
1965年,荷蘭學者dijkstra提出的訊號量(semaphores)機制是一種卓有成效的程序同步工具。在長期且廣泛的應用中,訊號量機制又得到了很大的發展,它從整型訊號量經記錄型訊號量,進而發展為「訊號量集」機制。現在,訊號量機制已經被廣泛地應用於單處理機和多處理機系統以及計算機網路中。
訊號量機制是誰提出來的?
7樓:銘刻
訊號量(semaphore),有時被稱為訊號燈,是在多執行緒環境下使用的一種設施,是可以用來保證兩個或多個關鍵**段不被併發呼叫。在進入乙個關鍵**段之前,執行緒必須獲取乙個訊號量;一旦該關鍵**段完成了,那麼該執行緒必須釋放訊號量。其它想進入該關鍵**段的執行緒必須等待直到第乙個執行緒釋放訊號量。
為了完成這個過程,需要建立乙個訊號量vi,然後將acquire semaphore vi以及型陪歲release semaphore vi分別放置在每個亂襪關鍵**段的首末端。確認這些訊號量vi引用的是初始建立的訊號量。以乙個停車場的運作為例。
簡單起見,假設停車場只有三個車位,一開始三個車位都是空的。這時如果同時來了五輛車,看門人允許其中三輛直接進入,然後放落車攔,剩下的車則必須在入口等待,此後來的車也都卜睜不得不在入口處等待。這時,有一輛車離開停車場,看門人得知後,開啟車攔,放入外面的一輛進去,如果又離開兩輛,則又可以放入兩輛,如此往復。
在這個停車場系統中,車位是公共資源,每輛車好比乙個執行緒,看門人起的就是訊號量的作用。
8樓:雷王春意濃
訊號量用於執行緒的同步。這是互斥量和訊號量的根本區別,也就是互斥和同步之間的區別。互斥:
是指某一資源同時只允許乙個訪問者對其進行訪問,具有唯一性和排它性。但互斥無法限制訪問者對資源的訪問順序,即訪問是無序的。同步:
是指在互斥的基礎上(大多數情況),通過其它機制實現訪問者對資源的有序訪問。在大多數情況下,同步已經實現了互斥,特別是所有寫入資源的情況必定是互斥的。少數情況是指可以允許多個訪問者同時訪問資源,訊號量可以用來實現互斥量的或耐功能,互斥量值只能為0/1,訊號量值可以為非負整數。
也就是說,乙個互斥量只能用於乙個資源的互斥訪問,它不能實現多個資源的多執行緒互斥問題。訊號量可以槐瞎實現多個同類資源的多執行緒互斥和同步。當訊號量為單值訊號量是,也可以完成乙個資源的互斥訪問。
互斥量的加鎖和解衫明春鎖必須由同一執行緒分別對應使用,訊號量可以由乙個執行緒釋放,另乙個執行緒得到。
什麼是脈衝訊號,訊號與系統中的脈衝訊號是什麼
瞬間突然變化,作用時間極短的電壓或電流稱為脈衝訊號.它可以是週期性重複的,也可以是非週期性的或單次的.是宇宙中的新星誕生的訊號 參 好短啊,有詳細的嗎 脈衝訊號 的意思是 脈衝信 號是一種離散訊號,形狀多種多樣,與普通模擬訊號 如正弦波 相比,波形之間在時間軸不連續 波形與波形之間有明顯的間隔 但具...
模擬訊號和數字訊號的區別,數字訊號與模擬訊號的區別是什麼?
1 模擬訊號與數字訊號 不同的資料必須轉換為相應的訊號才能進行傳輸 模擬資料一般採用模擬訊號 analog signal 例如用一系列連續變化的電磁波 如無線電與電視廣播中的電磁波 或電壓訊號 如 傳輸中的音訊電壓訊號 來表示 數字資料則採用數字訊號 digital signal 例如用一系列斷續變...
什么樣的訊號是電氣訊號,什麼樣的訊號是電氣訊號?
電氣訊號一般指的是電壓 電流等訊號,一般是4 20ma 0 20ma 0 10v等舉例的話,繼電器接受4 20ma 0 20ma 0 10v 0 220v電源通斷控制 那麼這個控制的方式就可以成為電氣訊號 說的直接點話就是1個低電壓 低電流的控制裝置控制高電壓,高電流的裝置 只是相對來說 他接受的範...