作業系統2 4 1 死鎖的概念

2021-10-07 12:38:29 字數 1420 閱讀 7375

多個程序因競爭資源而導致各程序都阻塞(相互等待)。

若無外力作用,這些程序都將無法向前推進。

死鎖:各個程序互相等待對方手中的資源,導致各個程序都堵塞無法向前推進的現象

飢餓:由於長期得不到想要的資源,某程序無法向前推進的現象。比如:短程序優先演算法(spf)中,若有源源不斷的短程序到來,則長程序就一直得不到處理機,從而發生長程序的飢餓

死迴圈:某程序執行過程中一直跳不出某個迴圈的現象。有時候是因為程式邏輯bug,有時是程式設計師故意設計的

1、互斥條件:只有對必須互斥使用的資源的爭搶才會導致死鎖(如哲學家的筷子,印表機裝置)。像記憶體,揚聲器這樣可以同時讓多個程序使用的資源不會發生死鎖(因為程序不需要阻塞等待這種資源)

2、不剝奪條件:程序所獲得的資源在未使用完之前,不能由其它程序強行奪走,只能主動釋放

3、請求和保持條件:程序已經持有了至少乙個資源,但又提出了新資源請求,而該資源又被其他程序占有,此時請求程序被阻塞,但又對自己的資源不放

注意!發生死鎖時一定有迴圈等待,但是發生迴圈等待時未必是死鎖(迴圈等待是死鎖的必要不充分條件)。

比如哲學家程序中,如果5個哲學家都在等待對方放下筷子而進入了迴圈等待。此時有乙個神秘的第六人,它手上有一根樹枝(可以替代筷子的資源),給其中乙個哲學家他們就不會死鎖了。

即同類資源數大於1,則即使有迴圈等待,也未必會發生死鎖。如果系統中的每類資源只有1個,那麼迴圈等待就必然會導致死鎖了。

1、對系統資源的競爭。各個程序對不可剝奪的資源(如印表機)的競爭可能引起死鎖,對可剝奪的資源(cpu)的競爭是不會引起死鎖的

2、程序推進順序非法。請求和釋放資源的順序不當,也同樣會導致死鎖。

例如,併發執行的程序p1,p2分別申請並占有資源r1,r2,之後程序p1又緊接著申請資源r2,而程序p2又申請資源r1,兩者會因為申請的資源被對方占有而阻塞,從而發生死鎖

3、訊號量的使用不當也會造成死鎖。如生產者-消費者程序中,如果實現互斥的p操作在 實現同步的p操作之前,就可能導致死鎖

總之,對不可剝奪資源的分配不合理,就可能導致死鎖。

1、預防死鎖:破壞死鎖產生的四個必要條件的乙個或幾個

2、避免死鎖:用某種方法防治系統進入不安全狀態,從而避免死鎖(銀行家演算法)

3、死鎖的檢測和解除:允許死鎖發生,不過作業系統會負責檢測出死鎖的發生,然後採取某種措施解除死鎖

作業系統的死鎖概念,臨界區概念

作業系統中 有若干程序併發執 行,它們不斷申請 使用 釋放系統資源,雖然系統的進 程協調 通訊機構會對它們進行控制,但也可能出現 若干程序都相互等待對方釋放資源才能 繼續執行,否則就阻塞的情況 此時,若不借助外界因素,誰也不能釋放資源,誰也不能解 除阻塞狀態 根據這樣的情況,作業系統中的死鎖被定義為...

作業系統 程序管理 概念 死鎖

死鎖 死鎖的原因 1 因為系統資源不足。2 程序執行推進的順序不合適,保證有先後順序。3 資源分配不當等。死鎖的必要條件.產生死鎖的四個必要條件 1 互斥條件 乙個資源每次只能被乙個程序使用。2 請求與保持條件 乙個程序因請求資源而阻塞時,對已獲得的資源保持不放。3 不剝奪條件 程序已獲得的資源,在...

作業系統死鎖

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