1、死鎖的例子:
資源a、b,程序c、d描述如下:
資源a和資源b,都是不可剝奪資源,
現在程序c已經申請了資源a
,程序d也申請了資源b,
程序c接下來的操作需要用到資源b,而程序d恰好也在申請資源a,
程序c、d都得不到接下來的資源,那麼就引發了死鎖。
2、死鎖的四個必要條件:
互斥條件(mutual exclusion):資源不能被共享,只能由乙個程序使用。
請求與保持條件(hold and wait):已經得到資源的程序可以再次申請新的資源。
不可剝奪剝奪條件(no pre-emption):已經分配的資源不能從相應的程序中被強制地剝奪。
環路條件/迴圈等待條件(circular wait):系統中若干程序組成環路,該環路中每個程序都在等待相鄰程序正占用的資源。
3、處理死鎖的策略
理解了死鎖的原因,尤其是產生死鎖的四個
必要條件
,就可以最大可能地避免、預防和解除死鎖。只要打破四個必要條件之一就能有效預防死鎖的發生:打破互斥條件:改造獨占性資源為虛擬資源,大部分資源已無法改造。打破不可搶占條件:當一程序占有一獨占性資源後又申請一獨占性資源而無法滿足,則退出原占有的資源。打破占有且申請條件:採用資源預先分配策略,即程序執行前申請全部資源,滿足則執行,不然就等待,這樣就不會占有且申請。打破迴圈等待條件:實現資源有序分配策略,對所有裝置實現分類編號,所有程序只能採用按序號遞增的形式申請資源。
死鎖的4個必要條件
1.互斥條件 2.非搶占條件 3.占有並等待條件 4.迴圈等待條件 以下正解 發生死鎖的必要條件有四點 互斥條件 不可搶占條件 部分分配條件和迴圈等待條件。互斥條件 系統中存在乙個資源一次只能被乙個程序所使用 非搶占條件 系統中存在乙個資源僅能被占有它的程序所釋放,而不能被別的程序強行搶占。占有並等...
死鎖,死鎖的四個必要條件以及處理策略
死鎖是指兩個或兩個以上的程序 執行緒 在執行過程中因爭奪資源而造成的一種僵局,若無外力作用,這些程序 執行緒 都將無法向前推進。飢餓 starvation 指乙個程序一直得不到資源。死鎖和飢餓都是由於程序競爭資源而引起的。飢餓一般不占有資源,死鎖程序一定占有資源。互斥 至少有乙個資源必須處於非共享模...
死鎖的四個必要條件以及處理策略
什麼是死鎖?如果乙個程序集合裡面的每個程序都在等待只能由這個集合中的其他乙個程序 包括他自身 才能引發的事件,這種情況就是死鎖。這個定義可能有點拗口,乙個最簡單的例子就是有資源a和資源b,都是不可剝奪資源,現在程序c已經申請了資源a,程序d也申請了資源b,程序c接下來的操作需要用到資源b,而程序d恰...