對于永久性資源撑毛,產(chǎn)生死鎖有四個必要條件:
- 互斥條件。一個資源只能被一個進(jìn)程占用
- 不可剝奪條件腺办。某個進(jìn)程占用了資源,就只能他自己去釋放慧起。
- 請求和保持條件菇晃。某個進(jìn)程之前申請了資源册倒,我還想再申請資源蚓挤,之前的資源還是我占用著,別人別想動驻子。除非我自己不想用了灿意,釋放掉。
- 循環(huán)等待條件崇呵。一定會有一個環(huán)互相等待缤剧。
什么是必要條件
必要條件是數(shù)學(xué)中的一種關(guān)系形式。如果沒有A域慷,則必然沒有B荒辕;如果有A而未必有B汗销,則A就是B的必要條件,記作B→A抵窒,讀作“B含于A”弛针。數(shù)學(xué)上簡單來說就是如果由結(jié)果B能推導(dǎo)出條件A,我們就說A是B的必要條件李皇。
可能我一直犯了一個錯誤削茁,把必要條件理解成了數(shù)學(xué)中的必要條件,其實這里更像是邏輯學(xué)的一些關(guān)系形式掉房。這里或多或少還是有一定區(qū)別的茧跋。
數(shù)學(xué)
有命題p、q卓囚,如果p推出q瘾杭,則p是q的充分條件,q是p的必要條件哪亿;如果p推出q且q推出p富寿,則p是q的充分必要條件,簡稱充要條件锣夹。
邏輯學(xué)
- 必要條件
定義:如果沒有事物情況A页徐,則必然沒有事物情況B;如果有事物情況B就一定有事物情況A银萍,A就是B的必要條件变勇,應(yīng)注意必要條件不是必要不充分條件的簡稱。 - 充分條件
定義:如果有事物情況A贴唇,則必然有事物情況B搀绣;如果沒有事物情況A而未必沒有事物情況B,A就是B的充分而不必要條件戳气,簡稱充分條件链患。緊跟在“如果”之后 。
必要條件是邏輯學(xué)在研究假言命題及假言推理時引出的瓶您。
我們按照邏輯學(xué)的定義來簡述 :
產(chǎn)生死鎖的4個必要條件是1.互斥2.不可剝奪3.請求和保持4.循環(huán)等待麻捻。
邏輯學(xué)的定義
如果沒有事物情況A,則必然沒有事物情況B呀袱;如果有事物情況B就一定有事物情況A贸毕,A就是B的必要條件,應(yīng)注意必要條件不是必要不充分條件的簡稱夜赵。
如果沒有這個4個條件(1.互斥2.不可剝奪3.請求和保持4.循環(huán)等待),則必然不會產(chǎn)生死鎖明棍;
如果產(chǎn)生死鎖,這一定有這個4個條件(1.互斥2.不可剝奪3.請求和保持4.循環(huán)等待)并且這4個條件都是要滿足的寇僧。并不是滿足其中一個摊腋。
4個條件是死鎖產(chǎn)生的必要條件沸版。不是充分條件,充分條件的意思是如果有這個4個條件兴蒸,就一定會死鎖推穷,顯示不是,要產(chǎn)生死鎖肯定還有其他條件滿足才行类咧。但是必要條件的意思是馒铃,只要產(chǎn)生死鎖,就會有這4種情況出現(xiàn)痕惋,如果有一條情況不滿足区宇,那么肯定不會產(chǎn)生死鎖。所以我們經(jīng)常預(yù)防死鎖就是通過解除這4個必要條件來實現(xiàn)值戳。
北京大學(xué)出版社 陳向群 的 《操作系統(tǒng)教程》第三版 我怎么感覺這句話不嚴(yán)謹(jǐn)呢议谷?
我覺得應(yīng)該改成 只要系統(tǒng)發(fā)生死鎖,則以上四個條件都必須成立堕虹。