OS回顧 死鎖

2021-10-22 01:53:12 字數 901 閱讀 8597

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

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

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

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

打破四個條件即可:

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

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

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

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

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

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

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

v(s):

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

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

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

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

// 生產者

dowhile(1

);// 消費者

dowhile(1

);

OS 程序 執行緒 死鎖

程序執行緒 含義 乙個在記憶體中執行的應用程式 程序的乙個執行任務 包含關係 乙個程序有若干個執行緒,至少包含乙個執行緒 程序的一部分,相當於只有乙個任務的程序 也稱輕權程序 輕量級程序 根本區別 作業系統資源分配的基本單位 處理器任務排程和執行的基本單位 資源開銷 每個程序都有獨立的 和資料空間 ...

OS 死鎖的處理方法

將死鎖比喻成火災,處理死鎖的方法同樣可以模擬處理火災,從而將處理死鎖分為預防 避免 檢測與恢復四個方面。預防的目的就是從源頭杜絕死鎖的發生,確保系統永遠都不會進入死鎖狀態。針對coffman的死鎖發生的4個必要條件,從這4個必要條件入手,可以得出預防死鎖的具體方法。1.破壞互斥條件 如果乙個資源不會...

OS學習之排程與死鎖

排程與死鎖 衡量作業排程的測度 1 作業平均周轉時間 t和加權平均周轉時間w。t 其中ti fi ai,即作業結束時間減去作業到達時間,n為作業數 w 其中wi ti ri,r 為事件執行時間 2 作業或程序的平均等待時間,即各個作業或程序進入可以排程的狀態 作業為收容狀態,程序為就緒狀態 到開始選...