Ⅰ 互斥信號量為什麼要成對出現
互斥信號量要成對出現:如兩個進程都反過來操作,先互斥了,但是沒有得到臨界資源。
當一個進程1運行時,使用資源,進行P操作,即對信號量值減1,也就是資源數少了1個。這時信號量值為0。系統中規定當信號量值為0時,必須等待,直到信號量值不為零才能繼續操作。
這時如果進程2想要運行,那麼也必須進行P操作,但是此時信號量為0,所以無法減1,即不能P操作,也就阻塞。這樣就達到了進程1排他訪問。
V原語操作的動作是:
(1)S加1。
(2)若相加結果大於零,則進程繼續執行。
(3)若相加結果小於或等於零,則從該信號的等待隊列中喚醒一等待進程,然後再返回原進程繼續執行或轉進程調度。
PV操作對於每一個進程來說,都只能進行一次,而且必須成對使用。在PV原語執行期間不允許有中斷的發生。
信號量機制分 整型信號量機制、記錄型信號量機制、and型信號量機制、信號量集。
整型信號量是一種最簡單的信號量,主要用於解決並發程序互斥訪問臨界資源問題。
Ⅱ 簡述利用信號量實現兩個進程互斥的實現
對於兩個並發進程,互斥信號量為mutex,則mutex的初值為1,任何時刻只能有一個進程訪問臨界區。若沒有進程進入臨界區,則mutex為1;若一個進程進入臨界區,另一個進程在等待進入,則mutex為-1;若一個進程進入臨界區,則mutex為0;不可能出現兩個進程都進入臨界區的情況。
Ⅲ 什麼是信號量機制
信號量機制
目錄
1摘要
2基本信息
(2)若S減1後仍大於或等於零,則進程繼續執行; 信號量機制分 信號量集的定義:
基本信息
提出時間
1965年
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分別表示每類臨界資源分給進程的下限值;
Ⅳ 操作系統題目
1,D 2,B 3,C 4,C 5,B
1,p,v操作是信號量的原子操作,是指wait(),signal()操作,具有不可再分性,是信號量的原語操作
.因此選D.
2,信號量的值為1,表示開始系統有兩個可用的資源,現在變成-1,則表示有一個資源正在等待,因此選B。
4,人們把在每個進程中訪問臨界資源的那段代碼稱為臨界區,因此選C。
5,兩個並發進程,mutex的初值為1,表示有一個可用資源,現在為0,即表示有一個資源進入臨界區,因此選B。
Ⅳ 信號量機制引進的原因
信號量機制分 整型信號量機制、記錄型信號量機制、and型信號量機制、信號量集。
整型信號量是一種最簡單的信號量,主要用於解決並發程序互斥訪問臨界資源問題。
記號信號量在整型信號量的舉出上進行了改進,讓不能進入臨界區的進程「讓權等待」,即進程狀態有運行轉換為阻塞狀態,進程進入阻塞隊列中等待。
AND型信號量集是將進程在運行中所需要的臨界資源全部一次性分配給進程,等進程用完後再全部一次釋放。
信號量集的定義:
1.用s1、s2、...sn分別表示有n類裂解資源信號量;
2.用d1、d2、...dn分別表示進程需要的每類臨界資源個數;
3.用t1、t2、...tn分別表示每類臨界資源分給進程的下限值;
信號量是一個整數,其值不小於0。它表示被積累下來的喚醒操作數。
P原語操作的動作是:
(1) 檢查S是否大於0。
(2) 若S>0,則S = S – 1;否則,執行P操作的進程將睡眠,並且此時P操作並未結束。
V原語操作的動作是:
(1)S = S + 1。
(2)如果一個或多個進程在該信號量上睡眠,無法完成先前的P操作,則有系統選擇其中一個並允許它完成P操作。
Ⅵ 如何利用信號量機制來實現多個進程對臨界資源的互斥訪問
Var mutex: semaphore:=1; begin parbegin process 1: begin repeat wait(mutex); critical section signal(mutex); remainder section until false; end process 2: begin repeat wait(mutex); critical section signal(mutex); remainder sect...
Ⅶ 為什麼在wait和signal操作中對信號量s的訪問必須互斥執行
因為在執行時是不可中斷的,且必須成對出現。
缺少wait導致系統混亂,不能保證對臨界資源的互斥訪問,缺少signal將會使臨界資源永遠不被釋放,導致等待該資源的進程不被喚醒。
Ⅷ 有N個進程共享同一臨界資源,如用信號量機制,實現對一臨界資源的互斥訪問,則信號量的變化范圍是
D:1----[-(n-1)]信號量初值為1.當有進程運行時,其他進程訪問信號量,信號量就會減一。
信號量是指同時需要多個資源且每種佔用一個資源時的信號量操作。即在一個原語中申請整段代碼度需要的多個臨界資源,要麼全部分配給它,要麼一個都不分配給它。
以避免當一段處理代碼需要同時獲取兩個或多個臨界資問源時,出現由於各進程等待其餘的臨界資源,變成死鎖的情況。
(8)信號量機制臨界資源互斥訪問擴展閱讀:
注意事項:
信號響應,每個信號的順序並不重要,雖然會影響塊隊列的過程,但由於原子操作模式,是否所有分配的資源分配,所以總有一個過程的所有資源和釋放資源推動後,所以它不會死鎖。
由於在信號量和信號量中使用通用信號的靈活性,Swait和Ssignal通常不成對使用。為了避免死鎖,可以一起申請所有需要的資源,但不要一起釋放它們。
信號量是指進程在執行任務之前需要獲取兩個或多個共享資源的應用程序。
假設現在有兩個進程A和B,它們都需要訪問共享數據D和e。當然,共享數據應該始終是關鍵資源。
為此可以將信號量Dmutex和Emutex分別設置為互斥,並將它們的初始值設置為1,因此個進程都包含了對Dmutex和Emutex的操作。
Ⅸ 信號量機制是什麼
1965年,荷蘭學者Dijkstra提出的信號量(Semaphores)機制是一種卓有成效的進程同步工具。在長期且廣泛的應用中,信號量機制又得到了很大的發展,它從整型信號量經記錄型信號量,進而發展為「信號量集」機制。現在,信號量機制已經被廣泛地應用於單處理機和多處理機系統以及計算機網路中。信號量S是一個整數,S大於等於零是代表可供並發進程使用的資源實體數,當S小於零時則表示正在等待使用臨界區的進程數。PV操作對於每一個進程來說,都只能進行一次,而且必須成對使用。在PV原語執行期間不允許有中斷的發生。
信號量機制分整型信號量機制、記錄型信號量機制、and型信號量機制、信號量集。整型信號量是一種最簡單的信號量,主要用於解決並發程序互斥訪問臨界資源問題。記號信號量在整型信號量的舉出上進行了改進,讓不能進入臨界區的進程「讓權等待」,即進程狀態有運行轉換為阻塞狀態,進程進入阻塞隊列中等待。在整型信號量機制中的wait操作,只要是信號量S<=0,就會不斷測試。因此,該機制並未遵循「讓權等待」准則,而是使進程處於「忙等」狀態。記錄型信號量機制則是一種不存在「忙等」現象的進程同步機制。但在採取了「讓權等待」的策略後,又會出現多個進程等待訪問同一個臨界資源的情況。為此,在信號量機制中,除了需要一個用於代表資源數目的整型變數value外,還應該增加一個進程鏈表指針L,用於鏈接上述的所有等待進程。記錄型信號量是由於它採用了記錄型的數據結構而得名的。
Ⅹ 如何利用信號量機制實現多進程訪問臨界資源
進程互斥 定義:兩個或兩個以上的進程,不能同時進入關於同一組共享變數的臨界區域,否則可能發生與時間有關的錯誤,這種現象被稱作進程互斥.
在多道程序環境下,存在著臨界資源,它是指多進程存在時必須互斥訪問的資源。也就是某一時刻不允許多個進程同時訪問,只能單個進程的訪問。我們把這些程序的片段稱作臨界區或臨界段,它存在的目的是有效的防止競爭條件又能保證最大化使用共享數據。而這些並發進程必須有好的解決方案,才能防止出現以下情況:多個進程同時處於臨界區,臨界區外的進程阻塞其他的進程,有些進程在臨界區外無休止的等待。除此以外,這些方案還不能對CPU的速度和數目做出任何的假設。只有滿足了這些條件,才是一個好的解決方案。
訪問臨界資源的循環進程可以這樣來描述:
Repeat
entry section
Critical sections;
exit section
Remainder sectioni;
Until false
為實現進程互斥,可以利用軟體的方法,也可以在系統中設置專門的同步機制來協調多個進程,但是所有的同步機制應該遵循四大准則:
1.空閑讓進 當臨界資源處於空閑狀態,允許一個請求進入臨界區的進程立即進入臨界區,從 而有效的利用資源。
2.忙則等待 已經有進程進入臨界區時,意味著相應的臨界資源正在被訪問,所以其他准備進 入臨界區的進程必須等待,來保證多進程互斥。
3.有限等待 對要求訪問臨界資源的進程,應該保證該進程能在有效的時間內進入臨界區,防 止死等狀態。
4.讓權等待 當進程不能進入臨界區,應該立即釋放處理機,防止進程忙等待。
早期解決進程互斥問題有軟體的方法和硬體的方法,如:嚴格輪換法,Peterson的解決方案,TSL指令,Swap指令都可以實現進程的互斥,不過它們都有一定的缺陷,這里就不一一詳細說明,而後來Kijkstra提出的信號量機制則更好的解決了互斥問題。