競爭資源
程序間推進順序非法雖然程序在執行過程中可能發生死鎖,但死鎖的發生也必須具備一定的條件。可以看出,必須具備以下四個條件:
互斥條件
指程序對所分配到的資源進行排他性使用;
即在一段時間內某資源只由乙個程序占用;
如果此時還有其他程序請求該資源,則請求者只能等待,直至占有該資源的程序用畢釋放。
請求和保持條件
指程序已經保持了至少乙個資源,但又提出了新的資源請求;而該資源又被其他程序占有;此時請求程序阻塞,但又對自己已獲得的資源保持不放。
不剝奪條件
指程序已獲得的資源,在未使用完之前,不能被剝奪;只能在使用完時由自己釋放。
環路等待條件
指在發生死鎖時,必然存在乙個「程序—資源」的環形鏈;
即程序集合中的
p0正在等待乙個p1占用的資源;
p1正在等待乙個p2占用的資源;
pn正在等待乙個已被p0占用的資源。
一、預防死鎖——消除產生死鎖的必要條件(靜態)
二、避免死鎖——分配資源時防止進入不安全狀態(動態)
三、檢測死鎖——不預防死鎖,隨時檢測死鎖(動態)
四、解除死鎖——出現死鎖就解除(動態)
摒棄「請求和保持」條件
靜態資源分配法:
所有程序在開始執行之前,都必須一次性 的申請其在整個執行過程所需的全部資源。
優點:演算法簡單、易於實現且很安全
缺點:資源浪費嚴重,程序延遲執行。
摒棄「不剝奪」條件
程序申請不到新的資源則必須放棄已到手的所有資源。
特點:實現複雜,代價大,易造成程序前、後工作不連貫甚至結果出現混亂;
反覆申請、釋放易導致程序延遲率加大,周轉時間加長,系統開銷加大,吞吐量下降
摒棄「環路等待」條件
有序資源分配法:
系統將所有資源按型別進行線性排隊,並賦予不同的序號。
所有程序對資源的請求必須嚴格按照資源序號遞增的次序提出。
優點:資源利用率和系統吞吐量都有較明顯的改善。
缺點:為資源編號限制新裝置的增加;程序使用裝置順序與申請順序相反;限制使用者程式設計自由。
競爭資源
程序間推進順序非法雖然程序在執行過程中可能發生死鎖,但死鎖的發生也必須具備一定的條件。可以看出,必須具備以下四個條件:
互斥條件
指程序對所分配到的資源進行排他性使用;
即在一段時間內某資源只由乙個程序占用;
如果此時還有其他程序請求該資源,則請求者只能等待,直至占有該資源的程序用畢釋放。
請求和保持條件
指程序已經保持了至少乙個資源,但又提出了新的資源請求;而該資源又被其他程序占有;此時請求程序阻塞,但又對自己已獲得的資源保持不放。
不剝奪條件
指程序已獲得的資源,在未使用完之前,不能被剝奪;只能在使用完時由自己釋放。
環路等待條件
指在發生死鎖時,必然存在乙個「程序—資源」的環形鏈;
即程序集合中的
p0正在等待乙個p1占用的資源;
p1正在等待乙個p2占用的資源;
pn正在等待乙個已被p0占用的資源。
一、預防死鎖——消除產生死鎖的必要條件(靜態)
二、避免死鎖——分配資源時防止進入不安全狀態(動態)
三、檢測死鎖——不預防死鎖,隨時檢測死鎖(動態)
四、解除死鎖——出現死鎖就解除(動態)
摒棄「請求和保持」條件
靜態資源分配法:
所有程序在開始執行之前,都必須一次性 的申請其在整個執行過程所需的全部資源。
優點:演算法簡單、易於實現且很安全
缺點:資源浪費嚴重,程序延遲執行。
摒棄「不剝奪」條件
程序申請不到新的資源則必須放棄已到手的所有資源。
特點:實現複雜,代價大,易造成程序前、後工作不連貫甚至結果出現混亂;
反覆申請、釋放易導致程序延遲率加大,周轉時間加長,系統開銷加大,吞吐量下降
摒棄「環路等待」條件
有序資源分配法:
系統將所有資源按型別進行線性排隊,並賦予不同的序號。
所有程序對資源的請求必須嚴格按照資源序號遞增的次序提出。
優點:資源利用率和系統吞吐量都有較明顯的改善。
缺點:為資源編號限制新裝置的增加;程序使用裝置順序與申請順序相反;限制使用者程式設計自由。
作業系統死鎖
作業系統死鎖,在作業系統課程當中屬於比較關注的乙個知識點,在這裡做個簡單的梳理。死鎖的四個必要條件 作業系統中有若干程序併發執行,它們不斷申請 使用 釋放系統資源,雖然系統的進 程協調 通訊機構會對它們進行控制,但也可能出現若干程序都相互等待對方釋放資源才能 繼續執行,否則就阻塞的情況。此時,若不借...
作業系統 死鎖
多執行緒以及多程序改善了系統資源的利用率並提高了系統 的處理能力。然而,併發執行也帶來了新的問題 死鎖。死鎖是指多個程序在執行過程中因爭奪資源而造成的一種僵局,當前程序處於這種狀態時,若無外力作用,它們都將無法再向前推進。關於死鎖的一些結論 競爭資源 當系統中供多個程序共享的資源如印表機 公用佇列等...
作業系統 死鎖
把需要排他性使用的物件稱為資源。資源可以是硬體也可以是軟體,比如印表機或者資料庫中的乙個加鎖記錄。資源可以分為兩類 可搶占資源和不可搶占資源。搶占這個詞,在程序和執行緒排程時就提到了這個概念,那時是程序或者執行緒可以搶占cpu,即搶占式排程。儲存器也可以搶占,如記憶體換頁。一般來說,可搶占資源不會引...