1. 程式人生 > >【面試中關於死鎖的四個條件以及如何解決死鎖的記錄】

【面試中關於死鎖的四個條件以及如何解決死鎖的記錄】

概念:

一、死鎖:如果一個程序集合裡面的每個程序都在等待這個集合的其他一個程序才能繼續下去,若無外力它們將無法推進,這種情況就是死鎖,處於死鎖狀態的程序稱為死鎖程序

二、死鎖產生的原因

1、因競爭資源發生的死鎖現象:系統中供多個程序共享的資源的數目不足以滿足全部的需要時,就會引起請求資源的競爭,而發生死鎖現象;

2、可剝奪資源:某程序在獲得該類資源時,該資源同樣可以被其他程序或系統剝奪;

3、不可剝奪資源:當系統把該類資源分配給某個程序時,不能強制收回,只能在該程序使用完成後自動釋放;

4、競爭不可剝奪資源:系統中不可剝奪資源的數目不足以滿足所有程序的執行請求,則發生在執行程序中,不同的程序因爭奪這些資源陷入僵局;

三、產生死鎖的四個必要條件

互斥條件:程序對所分配到的資源不允許其他程序進行訪問,若其他程序訪問該類資源,只能等待,直至佔有該資源的程序使用完成後釋放資源;

請求和等待:程序獲得一定的資源之後,又對其他資源發出請求,但是該資源可能被其他程序佔用,此時請求阻塞,但又對自己獲得的資源保持不放;

不可剝奪條件:程序已獲得的資源,在未完成使用之前,不可剝奪,只能在使用完成後自己釋放;

環路等待:程序發生死鎖後,必然存在一個程序--資源之間的環形鏈;