⑴ 操作系統(死鎖避免)----銀行家演算法解題
死鎖:是指兩個以上的進程都因要求對方已經佔有的資源,導致無法運行下去的現象,死鎖是系統的一種出錯狀態,不僅浪費大量的系統資源,甚至會導纖賀余致整個系統的崩潰,所以死鎖是盡量預防和避免的。
產生死鎖的四個條件:
死鎖的處理
銀行家演算法是死鎖避免的重要演算法。
銀行家算毀滾法:資源==錢;收回資源==收回貸款;收不回資源==不會放貸;
例題:假設系統中有三類互斥資源R1,R2,R3。可用資源分別是9,8,5.在T0時刻系統有P1,P2,P3,P4,P5五個進程,這些進程最大的需求和已分配的資源如下所示,如果按_執行,那麼系統的狀態是安全的。
解:第一步:根據可用資源,可以求得剩餘資源。
R1=9-(1+2+2+1+1)=2
R2=8-(2+1+1+2+1)=1
R3=5-(1+1+0+0+3)=0
第二拍納步:根據剩餘資源求得還需要的資源數。
公式:還需資源(Need)=最大需求(Max)-已分配資源(Allocation)。
第三部,根據剩餘資源數,求出安全序列。
根據剩餘資源可得,p2可以執行(條件:每個值都必須≦剩餘資源)
由此可見安全序列為P2-->p4-->p5-->p1-->p3。
其實安全序列不是唯一的,這是為什麼呢?
大家可以看出來,現有資源要大於需要資源的情況下是有多種選擇的,因此安全序列不唯一。
⑵ 操作系統-銀行家演算法問題
1)剩餘:A:1 B:5 C:2 D:0
因為P1已經滿足最大需求數,則P1資源最終是可回收,則可看做剩餘:A:1 B:5 C3 D:2
2)是安全狀態;因為按照剩餘:A:1 B:5 C3 D:2(此時P1已經結束)分別按照順序滿足各進程的最大需求是可以把全部進程完成的(順序可為:P3 --> P4 --> P5 --> p2)
3)系統會去滿足;若此時去滿足,則剩餘資源為:A:1 B:1 C1 D:2
此時,各進程的狀態:
已佔有資源 最大需求數
A B C D A B C D
P1 0 0 0 0 0 0 1 2 (已結束)
P2 1 4 2 0 1 7 5 0
P3 1 3 5 4 2 3 5 6
P4 0 6 3 2 0 6 5 2
P5 0 0 1 4 0 6 5 6
按照各進程狀態以及剩餘資源,可以知道之後P3,即可回收已分配的資源,即處安全狀態。
這是本人的理解,如有錯,請包涵指出。
⑶ 銀行家演算法(操作系統)
1、這是安全狀態:
P1的需求小於可用資源數,先滿足P1的請求,然後回收P1資源:可用資源變為 (3,3,2)+(2,0,0)=(5,3,2);
這時P3可分配,P3結束後回收資源,可用資源為(5,3,2)+(2,1,1)=(7,4,3)
這時P0可分配,P0結束後回收資源,可用資源為(7,4,3)+(0,1,0)+(7,5,3)
接下來是P2,結束後可用資源為(7,5,3)+(3,0,2)=(10,5,5)
最後分配P4,結束後可用資源為(10,5,5)+(0,0,2)=(10,5,7)
這樣得到一個安全序列:P1-P3-P0-P2-P4,所以T0狀態是安全的。
2、T0時刻P1請求(1,1,2)<可用資源數(3,3,2),可以直接滿足。
⑷ 【討論】求助:一道操作系統 磁碟演算法的題目
謝謝了,我查到答案,就是看不明白。答:(1)由題意可知,讀一個邏輯記錄需2ms時間,讀出記錄後還需要4ms時間進行處理,故當磁頭處於某記錄的始點時,處理它共需6ms時間。而邏輯記錄是按逆時針方向安排的,因此系統處理完一個邏輯記錄後將磁頭轉到下一個邏輯記錄的始點需要12ms時間。從而可以計算出處理程序處理完這10個邏輯記錄所需的時間為:6+9*(12+6)=168ms (2)按最優化分布重新按排這10個邏輯記錄,可使處理程序處理完一個記錄後,磁頭剛好轉到下一個記錄的始點,此時,安順時針方向安排的邏輯記錄順序分別為:記錄1、記錄8、記錄5、記錄2、記錄9、記錄6、記錄3、記錄10、記錄7、記錄4,而需要的處理時間為6*10=60ms。[]