所謂死鎖指的是兩個或者兩個以上的進程在執(zhí)行過程中,因競爭資源或者彼此通信造成的阻塞,如果沒有外力作用,它們是無法推進下去的,此時稱系統(tǒng)處于死鎖狀態(tài)或系統(tǒng)產(chǎn)生了死鎖,這些永遠在互相等待的進程稱為死鎖進程。遇到這種情況,解決方法如下:
1、死鎖預防
這是一種較簡單和直觀的事先預防的方法。方法是通過設(shè)置某些限制條件,去破壞產(chǎn)生死鎖的四個必要條件中的一個或者幾個,來預防發(fā)生死鎖。預防死鎖是一種較易實現(xiàn)的方法,已被廣泛使用。但是由于所施加的限制條件往往太嚴格,可能會導致系統(tǒng)資源利用率和系統(tǒng)吞吐量降低。
2、死鎖避免
系統(tǒng)對進程發(fā)出的每一個系統(tǒng)能夠滿足的資源申請進行動態(tài)檢查,并根據(jù)檢查結(jié)果決定是否分配資源;如果分配后系統(tǒng)可能發(fā)生死鎖,則不予分配,否則予以分配。這是一種保證系統(tǒng)不進入死鎖狀態(tài)的動態(tài)策略。
3、死鎖檢測和解除。
先檢測:這種方法并不須事先采取任何限制性措施,也不必檢查系統(tǒng)是否已經(jīng)進入不安全區(qū),此方法允許系統(tǒng)在運行過程中發(fā)生死鎖。但可通過系統(tǒng)所設(shè)置的檢測機構(gòu),及時地檢測出死鎖的發(fā)生,并精確地確定與死鎖有關(guān)的進程和資源。檢測方法包括定時檢測、效率低時檢測、進程等待時檢測等。然后解除死鎖:采取適當措施,從系統(tǒng)中將已發(fā)生的死鎖清除掉。
以上就是什么是死鎖?的相關(guān)內(nèi)容。