作業系統 死鎖

2021-09-18 02:34:28 字數 1260 閱讀 2745

多執行緒以及多程序改善了系統資源的利用率並提高了系統 的處理能力。然而,併發執行也帶來了新的問題-死鎖

死鎖是指多個程序在執行過程中因爭奪資源而造成的一種僵局,當前程序處於這種狀態時,若無外力作用,它們都將無法再向前推進。

關於死鎖的一些結論:

競爭資源

當系統中供多個程序共享的資源如印表機、公用佇列等,其數目不足以滿足諸程序的需要時,會引起諸程序對資源的競爭而產生死鎖。

程序間推進順序非法

程序在執行過程中,請求和釋放資源的順序不當,也同樣會導致產生死鎖。

(1)競爭資源引起程序死鎖

可把系統中的資源分為兩類:

* 可剝奪性資源:資源分配給程序後可以被高優先順序的程序剝奪,如cpu,主存。

* 不可剝奪資源:分配給程序後只能在程序用完後才釋放的資源,如磁帶機、印表機等。

互斥條件

程序訪問的是臨界資源,即在一段時間內某資源只由乙個程序占用。如果此時還有其他程序請求該資源,則請求者只能等待,直至占有該資源的程序用完釋放。

請求和保持條件

一程序在請求新的資源的同時,保持對已分配資源的占有。

不可剝奪條件

指程序已獲得的資源,在未使用完之前,不能被剝奪,只能在使用完時由自己釋放。

環路等待條件

指在傳送死鎖時,必然存在乙個程序-資源的環形鏈。

解決方法:首先每個程序給n-1個資源,也就是4-1個,然後再給其中乙個程序多分乙個資源即可,也就是3*(n-1)+ 1 = 10個資源數,即選b。

在系統中已經出現死鎖後,則應及時檢測到死鎖的發生,並採用適當措施來解除死鎖。

目前處理死鎖的方法可歸結為四種:

(1) 預防死鎖

是一種較簡單和直觀的事先預防方法。該方法是通過設定某些限制條件,去破壞產生死鎖的四個必要條件的乙個或幾個,來預防發生死鎖。

(2) 避免死鎖

該方法同樣是屬於事先預防的策略,這種方法不是預先加上各種限制條件以預防產生死鎖的可能性,而是用某種方法去防止系統進入不安全狀態,使死鎖不至於最終發生。

(3)檢測死鎖

這種方法並不須事先採取任何限制措施,也不必檢查系統是否已經j進入不安全區。

此方法允許系統在執行過程中發生死鎖,但可通過系統所設定的檢測機構,及時的檢測出死鎖的發生,並精確的確定與死鎖有關的程序和資源;然後採取適當的措施,從系統中將已發生的死鎖清除掉。

(4)解除死鎖

是與死鎖檢測相配套的一種措施。當檢測到系統中已發生死鎖時,須將程序從死鎖狀態中解脫出來。

作業系統死鎖

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

作業系統 死鎖

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

作業系統死鎖

臨近畢業,最近忙著找實習,複習了下以前的作業系統課程,對死鎖知識做了簡單的梳理。死鎖 當某一程序提出資源的使用要求後,使得系統中的一些程序處於無休止的阻塞狀 態,在無外力作用下,這些程序永遠也不能前進的現象。死鎖取決於各程序的 b 推進速度 b 和對資源的 b 請求順序 b 死鎖的必要條件 互斥控制...