死鎖面試題(什麼是死鎖,產生死鎖的原因及必要條件)
阿新 • • 發佈:2019-01-03
什麼是死鎖?
- 所謂死鎖,是指多個程序在執行過程中因爭奪資源而造成的一種僵局,當程序處於這種僵持狀態時,若無外力作用,它們都將無法再向前推進。
產生死鎖的原因?
可歸結為如下兩點:
a. 競爭資源
系統中的資源可以分為兩類:
1. 可剝奪資源,是指某程序在獲得這類資源後,該資源可以再被其他程序或系統剝奪,CPU和主存均屬於可剝奪性資源;
2. 另一類資源是不可剝奪資源,當系統把這類資源分配給某程序後,再不能強行收回,只能在程序用完後自行釋放,如磁帶機、印表機等。產生死鎖中的競爭資源之一指的是競爭不可剝奪資源(例如:系統中只有一臺印表機,可供程序P1使用,假定P1已佔用了印表機,若P2繼續要求印表機列印將阻塞)
產生死鎖中的競爭資源另外一種資源指的是競爭臨時資源(臨時資源包括硬體中斷、訊號、訊息、緩衝區內的訊息等),通常訊息通訊順序進行不當,則會產生死鎖
b. 程序間推進順序非法
若P1保持了資源R1,P2保持了資源R2,系統處於不安全狀態,因為這兩個程序再向前推進,便可能發生死鎖
例如,當P1執行到P1:Request(R2)時,將因R2已被P2佔用而阻塞;當P2執行到P2:Request(R1)時,也將因R1已被P1佔用而阻塞,於是發生程序死鎖
死鎖產生的4個必要條件?
產生死鎖的必要條件:
- 互斥條件
- 請求和保持條件
- 不剝奪條件
- 環路等待條件。