2. 死鎖的起因
3. 死鎖的預防策略
問題描述:五個哲學家圍坐在圓桌邊,有5支筷子。他們做的事就是:思考-休息-吃飯
吃飯時使用兩支筷子:
用執行緒實現哲學家的生活,如下偽**所示:
int signal[5]
=[1,
1,1,
1,1]
;//筷子i是否可用:0=不可用;1=可用
philosopher (
int i)
}
假如5個哲學家在同一時刻吃飯,大家都拿起了左邊的筷子,但是右邊的筷子沒有,所有人都在等待右邊人放下手中的筷子。而右邊的人沒有吃完之前又不會放下筷子,所以所有的人都缺一支筷子永遠無法吃完飯,這時候就陷入了死鎖
。
兩個或多個程序無限期地等待永遠不會發生的條件的一種系統狀態。其結果就是每個程序都永遠阻塞。
另一種定義:在兩個或多個程序中,每個程序都持有某種資源,但又繼續申請其他的程序已持有的資源,此時每個程序都擁有其執行所需的一部分資源,但是又都不夠,從而每個程序都無法向前推進,限於阻塞狀態。這種狀態稱為死鎖。
條件描述
互斥條件
程序互斥使用資源,資源具有獨占性
不剝奪條件
程序在訪問完資源前不能被其他程序強行剝奪
部分分配條件
程序邊執行邊申請資源,臨時需要臨時分配
環路條件
多個程序構成環路:環中每個程序已占用的資源前一程序所示,而自己所申請的資源又被環中後已程序占用著
上面討論的哲學家吃飯問題,如果限定最多只有4人同時吃飯,就可以避免死鎖。因為此時環路條件被破壞了。
通過設定某些限制條件,破壞死鎖的四個必要條件中的乙個或多個來防止死鎖.
程序執行前將所需資源一次性全部分配給它。因此程序在執行的過程中不再提出資源請求,從而避免出現阻塞或死鎖。
特點:
改進:系統中的每個資源有乙個唯一序號,程序每次申請資源時只能申請序號更大的資源。如果程序已占有資源的訊號最大為m,則下次申請只能申請大於m的資源,而不能申請序號小於m的資源。
實行過程:
鴕鳥策略
作業系統死鎖
作業系統死鎖,在作業系統課程當中屬於比較關注的乙個知識點,在這裡做個簡單的梳理。死鎖的四個必要條件 作業系統中有若干程序併發執行,它們不斷申請 使用 釋放系統資源,雖然系統的進 程協調 通訊機構會對它們進行控制,但也可能出現若干程序都相互等待對方釋放資源才能 繼續執行,否則就阻塞的情況。此時,若不借...
作業系統 死鎖
多執行緒以及多程序改善了系統資源的利用率並提高了系統 的處理能力。然而,併發執行也帶來了新的問題 死鎖。死鎖是指多個程序在執行過程中因爭奪資源而造成的一種僵局,當前程序處於這種狀態時,若無外力作用,它們都將無法再向前推進。關於死鎖的一些結論 競爭資源 當系統中供多個程序共享的資源如印表機 公用佇列等...
作業系統 死鎖
把需要排他性使用的物件稱為資源。資源可以是硬體也可以是軟體,比如印表機或者資料庫中的乙個加鎖記錄。資源可以分為兩類 可搶占資源和不可搶占資源。搶占這個詞,在程序和執行緒排程時就提到了這個概念,那時是程序或者執行緒可以搶占cpu,即搶占式排程。儲存器也可以搶占,如記憶體換頁。一般來說,可搶占資源不會引...