死鎖是指兩個或兩個以上的進程在執行過程中,由于競爭資源或者由于彼此通信而造成的一種阻塞的現象,若無外力作用,它們都將無法推進下去。此時稱系統處于死鎖狀態或系統產生了死鎖,這些永遠在互相等待的進程稱為死鎖進程。
產生原因如下:
1、 競爭資源引起進程死鎖。當系統中供多個進程共享的資源如打印機、公用隊列的等,其數目不足以滿足諸進程的需要時,會引起諸進程對資源的競爭而產生死鎖;
2、 可剝奪資源和不可剝奪資源。系統中的資源可以分為兩類,一類是可剝奪資源,是指某進程在獲得這類資源后,該資源可以再被其他進程或系統剝奪;
3、 競爭不可剝奪資源。在系統中所配置的不可剝奪資源,由于它們的數量不能滿足諸進程運行的需要,會使進程在運行過程中,因爭奪這些資源而陷于僵局;
4、 競爭臨時資源。指由一個進程產生,被另一個進程使用,短時間后便無用的資源,故也稱為消耗性資源,它也可能引起死鎖。