作業系統 死鎖

2021-10-22 08:34:22 字數 901 閱讀 3277

互斥訪問條件:即乙個資源一段時間內只能被乙個執行緒占有,不能被兩個或兩個以上執行緒占有

不可搶占條件:當乙個資源正在被乙個程序占用時,不可以被其他程序搶占

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

迴圈等待條件:環形請求資源

打破四個條件即可:

互斥訪問條件:允許程序同時占用某些資源,但是不太可能

不可搶占條件:當乙個程序已占有了某些資源,它又申請新的資源,但不能立即被滿足時,它必須釋放所占有的全部資源,以後再重新申請。

占有且申請條件:實行資源預先分配策略:建立程序時,要求它申請所需的全部資源,系統或滿足其所有要求,或什麼也不給它。

迴圈等待條件:執行資源有序分配策略,採用這種策略,即把資源事先分類編號,按號分配,使程序在申請,占用資源時不會形成環路。所有程序對資源的請求必須嚴格按資源序號遞增的順序提出。程序占用了小號資源,才能申請大號資源,就不會產生環路,從而預防了死鎖。

這塊是對訊號量進行操作,如果訊號量的值大於0的時候,代表當前可用資源的數量,如果小於0的時候,代表等待使用該資源的程序數。

申請乙個單位資源,程序進入,讓s—

釋放乙個單位資源,執行緒出來s++

v(s):

使用pv操作實現程序互斥時應該注意的是:

每個程式中使用者實現互斥的p、v操作必須成對出現,先做p操作,進臨界區,後做v操作,出臨界區。若有多個分支,要認真檢查其成對性。

p、v操作應分別緊靠臨界區的頭尾部,臨界區的**應盡可能短,不能有死迴圈。

互斥訊號量的初值一般為1。

// 生產者

dowhile(1

);// 消費者

dowhile(1

);

作業系統死鎖

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

作業系統 死鎖

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

作業系統 死鎖

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