日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

多线程与死锁

發布時間:2025/3/15 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 多线程与死锁 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

死鎖是指兩個或兩個以上的進程在執行過程中,因爭奪資源而造成的一種互相等待的現象,若無外力作用,它們都將無法推進下去。

產生死鎖的原因:

一.因為系統資源不足。

二.進程運行推進的順序不合適。

三.資源分配不當。

產生死鎖的四個必要條件:

一.互斥條件:所謂互斥就是進程在某一時間內獨占資源。

二.請求與保持條件:一個進程因請求資源而阻塞時,對已獲得的資源保持不放。

三.不剝奪條件:進程已獲得資源,在末使用完之前,不能強行剝奪。

四.循環等待條件:若干進程之間形成一種頭尾相接的循環等待資源關系。

死鎖的預防

打破產生死鎖的四個必要條件中的一個或幾個,保證系統不會進入死鎖狀態。

一.打破互斥條件。即允許進程同時訪問某些資源。但是,有的資源是不允許被同時訪問的,像打印機等等,這是由資源本身的屬性所決定的。所以,這種辦法并無實用價值。

二.打破不可搶占條件。即允許進程強行從占有者那里奪取某些資源。就是說,當一個進程已占有了某些資源,它又申請新的資源,但不能立即被滿足時,它必須釋放所占有的全部資源,以后再重新申請。它所釋放的資源可以分配給其它進程。這就相當于該進程占有的資源被隱蔽地強占了。這種預防死鎖的方法實現起來困難,會降低系統性能。

三.打破占有且申請條件。可以實行資源預先分配策略。即進程在運行前一次性地向系統申請它所需要的全部資源。如果某個進程所需的全部資源得不到滿足,則不分配任何資源,此進程暫不運行。只有當系統能夠滿足當前進程的全部資源需求時,才一次性地將所申請的資源全部分配給該進程。由于運行的進程已占有了它所需的全部資源,所以不會發生占有資源又申請資源的現象,因此不會發生死鎖。

四.打破循環等待條件,實行資源有序分配策略。采用這種策略,即把資源事先分類編號,按號分配,使進程在申請,占用資源時不會形成環路。所有進程對資源的請求必須嚴格按資源序號遞增的順序提出。進程占用了小號資源,才能申請大號資源,就不會產生環路,從而預防了死鎖。

總結

以上是生活随笔為你收集整理的多线程与死锁的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。