千鋒教育2023版Java面試寶典Java面試200題(含美團(tuán)、字節(jié)、阿里大廠真
2023-07-18 21:33 作者:bili_58121321493 | 我要投稿

產(chǎn)生死鎖的原因:
(1)競爭資源
產(chǎn)生死鎖中的競爭資源之一指的是競爭不可剝奪資源(例如:系統(tǒng)中只有一臺打印機(jī),可供進(jìn)程P1使用,假定P1已占用了打印機(jī),若P2繼續(xù)要求打印機(jī)打印將阻塞)
產(chǎn)生死鎖中的競爭資源另外一種資源指的是競爭臨時資源(臨時資源包括硬件中斷、信號、消息、緩沖區(qū)內(nèi)的消息等),通常消息通信順序進(jìn)行不當(dāng),則會產(chǎn)生死鎖
(2)進(jìn)程間推進(jìn)順序非法
若P1保持了資源R1,P2保持了資源R2,系統(tǒng)處于不安全狀態(tài),因?yàn)檫@兩個進(jìn)程再向前推進(jìn),便可能發(fā)生死鎖。例如,當(dāng)P1運(yùn)行到P1:Request(R2)時,將因R2已被P2占用而阻塞;當(dāng)P2運(yùn)行到P2:Request(R1)時,也將因R1已被P1占用而阻塞,于是發(fā)生進(jìn)程死鎖
產(chǎn)生死鎖的必要條件:
互斥條件:進(jìn)程要求對所分配的資源進(jìn)行排它性控制,即在一段時間內(nèi)某資源僅為一進(jìn)程所占用。
請求和保持條件:當(dāng)進(jìn)程因請求資源而阻塞時,對已獲得的資源保持不放。
不剝奪條件:進(jìn)程已獲得的資源在未使用完之前,不能剝奪,只能在使用完時由自己釋放。
環(huán)路等待條件:在發(fā)生死鎖時,必然存在一個進(jìn)程——資源的環(huán)形鏈。
標(biāo)簽: