作業系統 死鎖

2021-10-03 19:08:06 字數 1196 閱讀 7460

2. 死鎖的起因

3. 死鎖的預防策略

問題描述:五個哲學家圍坐在圓桌邊,有5支筷子。他們做的事就是:思考-休息-吃飯

吃飯時使用兩支筷子:

用執行緒實現哲學家的生活,如下偽**所示:

int signal[5]

=[1,

1,1,

1,1]

;//筷子i是否可用:0=不可用;1=可用

philosopher (

int i)

}

假如5個哲學家在同一時刻吃飯,大家都拿起了左邊的筷子,但是右邊的筷子沒有,所有人都在等待右邊人放下手中的筷子。而右邊的人沒有吃完之前又不會放下筷子,所以所有的人都缺一支筷子永遠無法吃完飯,這時候就陷入了死鎖

兩個或多個程序無限期地等待永遠不會發生的條件的一種系統狀態。其結果就是每個程序都永遠阻塞。

另一種定義:在兩個或多個程序中,每個程序都持有某種資源,但又繼續申請其他的程序已持有的資源,此時每個程序都擁有其執行所需的一部分資源,但是又都不夠,從而每個程序都無法向前推進,限於阻塞狀態。這種狀態稱為死鎖。

條件描述

互斥條件

程序互斥使用資源,資源具有獨占性

不剝奪條件

程序在訪問完資源前不能被其他程序強行剝奪

部分分配條件

程序邊執行邊申請資源,臨時需要臨時分配

環路條件

多個程序構成環路:環中每個程序已占用的資源前一程序所示,而自己所申請的資源又被環中後已程序占用著

上面討論的哲學家吃飯問題,如果限定最多只有4人同時吃飯,就可以避免死鎖。因為此時環路條件被破壞了。

通過設定某些限制條件,破壞死鎖的四個必要條件中的乙個或多個來防止死鎖.

程序執行前將所需資源一次性全部分配給它。因此程序在執行的過程中不再提出資源請求,從而避免出現阻塞或死鎖。

特點:

改進:系統中的每個資源有乙個唯一序號,程序每次申請資源時只能申請序號更大的資源。如果程序已占有資源的訊號最大為m,則下次申請只能申請大於m的資源,而不能申請序號小於m的資源。

實行過程:

鴕鳥策略

作業系統死鎖

作業系統死鎖,在作業系統課程當中屬於比較關注的乙個知識點,在這裡做個簡單的梳理。死鎖的四個必要條件 作業系統中有若干程序併發執行,它們不斷申請 使用 釋放系統資源,雖然系統的進 程協調 通訊機構會對它們進行控制,但也可能出現若干程序都相互等待對方釋放資源才能 繼續執行,否則就阻塞的情況。此時,若不借...

作業系統 死鎖

多執行緒以及多程序改善了系統資源的利用率並提高了系統 的處理能力。然而,併發執行也帶來了新的問題 死鎖。死鎖是指多個程序在執行過程中因爭奪資源而造成的一種僵局,當前程序處於這種狀態時,若無外力作用,它們都將無法再向前推進。關於死鎖的一些結論 競爭資源 當系統中供多個程序共享的資源如印表機 公用佇列等...

作業系統 死鎖

把需要排他性使用的物件稱為資源。資源可以是硬體也可以是軟體,比如印表機或者資料庫中的乙個加鎖記錄。資源可以分為兩類 可搶占資源和不可搶占資源。搶占這個詞,在程序和執行緒排程時就提到了這個概念,那時是程序或者執行緒可以搶占cpu,即搶占式排程。儲存器也可以搶占,如記憶體換頁。一般來說,可搶占資源不會引...