什么是死鎖萄涯?
死鎖是指兩個或兩個以上的進程在執(zhí)行過程中献幔,由于競爭資源或者由于彼此通信而造成的一種阻塞的現(xiàn)象负甸,若無外力作用妆毕,它們都將無法推進下去慎玖。此時稱系統(tǒng)處于死鎖狀態(tài)或系統(tǒng)產(chǎn)生了死鎖,這些永遠在互相等待的進程稱為死鎖進程笛粘。
死鎖產(chǎn)生的原因
(1) 互斥條件趁怔。即某個資源在一段時間內(nèi)只能由一個進程占有,不能同時被兩個或兩個以上的進程占有薪前。這種獨占資源如CD-ROM驅(qū)動器润努,打印機等等,必須在占有該資源的進程主動釋放它之后示括,其它進程才能占有該資源任连。這是由資源本身的屬性所決定的。如獨木橋就是一種獨占資源例诀,兩方的人不能同時過橋随抠。
? (2) 不可搶占條件。進程所獲得的資源在未使用完畢之前繁涂,資源申請者不能強行地從資源占有者手中奪取資源拱她,而只能由該資源的占有者進程自行釋放。如過獨木橋的人不能強迫對方后退扔罪,也不能非法地將對方推下橋秉沼,必須是橋上的人自己過橋后空出橋面(即主動釋放占有資源),對方的人才能過橋矿酵。
? (3) 占有且申請條件唬复。進程至少已經(jīng)占有一個資源,但又申請新的資源全肮;由于該資源已被另外進程占有敞咧,此時該進程阻塞;但是辜腺,它在等待新資源之時休建,仍繼續(xù)占用已占有的資源。還以過獨木橋為例评疗,甲乙兩人在橋上相遇测砂。甲走過一段橋面(即占有了一些資源),還需要走其余的橋面(申請新的資源)百匆,但那部分橋面被乙占有(乙走過一段橋面)砌些。甲過不去,前進不能加匈,又不后退存璃;乙也處于同樣的狀況宙彪。
? (4) 循環(huán)等待條件。存在一個進程等待序列{P1有巧,P2释漆,…,Pn}篮迎,其中P1等待P2所占有的某一資源男图,P2等待P3所占有的某一源,……甜橱,而Pn等待P1所占有的的某一資源逊笆,形成一個進程循環(huán)等待環(huán)。就像前面的過獨木橋問題岂傲,甲等待乙占有的橋面难裆,而乙又等待甲占有的橋面,從而彼此循環(huán)等待镊掖。