1.為什麼合作的行程需要同步的機制
以確保在多個合作行程同時執行的環境中,不同行程的運算不會相互干擾,而能維持各行程的正常運作,以及共享資料的完整性。
2.試說明並解釋滿足臨界區的3項條件。
互斥:某個行程處於臨界區並且存取一組共同資源,例如R1、R2、R3……,其他行程無法進入可存取相同資源的臨界區,即稱為互斥。
進行:當沒有任何行程在臨界區裡,並且有行程在等待進入臨界區,則系統必須讓其中一個等待的行程在有限的時間裡進入臨界區。如果有些行程在臨界區外就結束了,這不能影響其他行程進入臨界區。
有限等待:行程從請求進入臨界區到獲准進入之間的時間必須是有限的。行程不能因為飢餓或死結等問題而被拒絕進入臨界區。
3.何謂死結?請說明死結成立的4項條件。
如果一群行程中的每個行程都在等待某個只能被這群行程中另一個行程所引發的事件時,這群行程就發生了死結。
雙方都掌握了某些資源,並且需要對方手上的另一些資源才能完成所需的任務,沒有取得剩餘的資源就無無限期地等待,而造成死結。
死結成立的條件:
1)互斥。
2)佔用且等候:行程在等待其他資候的時候也同時佔用某些資源沒有釋放。
3)不可搶先:不能強制從已經取得資源的行程手中搶走它的資源。
4)循環等待:兩個或更多行程形成一個封閉迴路,且其中的每個行程都在等待迴路中下個行程所佔用的某些資源。
4.請說明如何預防死結?其中的哪項條件是無法避免的。
死結要成立有四個條件,預防其中一項成立就可以預防死結。其中「互斥」是不可能避免的。
5.請解釋何謂安全狀態?為什麼系統在不安全狀態下不見得會進入死結?
當系統能夠以某種安全執行序列(safe execution sequence)為每個行程配置資源,並且避免死結時,我們稱這個系統是處於安全(safe)狀態。
在不安全狀態下之所以不見得會進入死結,是因為系統使用資源的真正時間是無法確定的,可能行程使用資源的時間正好相互錯開,因而不會發生死結。
6.某系統包含四個行程P1、P2、P3、P4,和三種必須循序使用的資源R1、R2、R3。這些資源的數量為(3,2,2)
●P1佔用1個R1,並且請求1個R2
●P2佔用2個R2,並且請求1個R1和1個R3
●P3佔用1個R1,並且請求1個R2
●P4佔用2個R3,並且請求1個R1
不會形成死結。
當前系統閒置資源為1個R1,可執行P4。P4執行後,閒置資源為1個R1,2個R3,可執行P2。P2執行後,閒置資源為1個R1,2個R2及2個R3,可執行P1。P1執行後閒置資源為2個R1,2個R2及2個R3,可執行P3。P3執行後閒置資源為3個R1,2個R2及2個R3。
安全執行序列為P4>P2>P1>P3。
7.一個系統的行程與資源的配置如下所示,請利用銀行家演算法回答下列問題:
a.系統是否目前處於安全狀態之中。
b.系統是否可以允許P3所提出的(0,1,0,2)的資源要求。
行程 | 需要資源數目 | 持有資源數目 | 系統未配置資源數目 | |||||||||
A | B | C | D | A | B | C | D | A | B | C | D | |
P1 | 0 | 1 | 1 | 2 | 1 | 2 | 1 | 0 | 1 | 4 | 1 | 2 |
P2 | 1 | 2 | 1 | 1 | 5 | 1 | 3 | 0 | ||||
P3 | 1 | 5 | 2 | 4 | 2 | 1 | 4 | 2 | ||||
P4 | 0 | 2 | 6 | 2 | 5 | 3 | 0 | 2 | ||||
P5 | 4 | 0 | 1 | 1 | 1 | 4 | 2 | 0 |
a)是,系統處於安全狀態之中。安全序列為P3>P1>P2>P5>P4。
b)允許。
8.假設某系統共有R的總數為8,請判斷下列系統是否處於安全狀態,如果是的話,請寫出它的一個安全執行序列。
行程 | 需要R的總數 | 持有R的數目 |
P1 | 8 | 1 |
P2 | 5 | 2 |
P3 | 1 | 1 |
P4 | 7 | 2 |
P5 | 3 | 0 |
目前系統閒置資源為2,P3不需請求資源,可先執行,執行後閒置資源為3,可執行P5,執行後閒置資源為3,可執行P2,執行後閒置資源為5,可執行P4,執行後閒置資源為7,可執行P1。
因此安全執行序列為P3>P5>P2>P4>P1。