對(duì)于永久性資源,產(chǎn)生死鎖有四個(gè)必要條件:
- 互斥條件。一個(gè)資源只能被一個(gè)進(jìn)程占用
- 不可剝奪條件。某個(gè)進(jìn)程占用了資源,就只能他自己去釋放。
- 請(qǐng)求和保持條件。某個(gè)進(jìn)程之前申請(qǐng)了資源,我還想再申請(qǐng)資源,之前的資源還是我占用著,別人別想動(dòng)。除非我自己不想用了,釋放掉。
- 循環(huán)等待條件。一定會(huì)有一個(gè)環(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的必要條件。
可能我一直犯了一個(gè)錯(cuò)誤,把必要條件理解成了數(shù)學(xué)中的必要條件,其實(shí)這里更像是邏輯學(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é)在研究假言命題及假言推理時(shí)引出的。
我們按照邏輯學(xué)的定義來簡述 :
產(chǎn)生死鎖的4個(gè)必要條件是1.互斥2.不可剝奪3.請(qǐng)求和保持4.循環(huán)等待。
邏輯學(xué)的定義
如果沒有事物情況A,則必然沒有事物情況B;如果有事物情況B就一定有事物情況A,A就是B的必要條件,應(yīng)注意必要條件不是必要不充分條件的簡稱。
如果沒有這個(gè)4個(gè)條件(1.互斥2.不可剝奪3.請(qǐng)求和保持4.循環(huán)等待),則必然不會(huì)產(chǎn)生死鎖;
如果產(chǎn)生死鎖,這一定有這個(gè)4個(gè)條件(1.互斥2.不可剝奪3.請(qǐng)求和保持4.循環(huán)等待)并且這4個(gè)條件都是要滿足的。并不是滿足其中一個(gè)。
4個(gè)條件是死鎖產(chǎn)生的必要條件。不是充分條件,充分條件的意思是如果有這個(gè)4個(gè)條件,就一定會(huì)死鎖,顯示不是,要產(chǎn)生死鎖肯定還有其他條件滿足才行。但是必要條件的意思是,只要產(chǎn)生死鎖,就會(huì)有這4種情況出現(xiàn),如果有一條情況不滿足,那么肯定不會(huì)產(chǎn)生死鎖。所以我們經(jīng)常預(yù)防死鎖就是通過解除這4個(gè)必要條件來實(shí)現(xiàn)。
北京大學(xué)出版社 陳向群 的 《操作系統(tǒng)教程》第三版 我怎么感覺這句話不嚴(yán)謹(jǐn)呢?

我覺得應(yīng)該改成 只要系統(tǒng)發(fā)生死鎖,則以上四個(gè)條件都必須成立。