死鎖

死鎖

概念:多個進程在運行過程中,因爭奪資源而造成的一種循環等待的僵局

產生死鎖的必要條件

  • 互斥條件:某資源在一段時間內只能由一個進程佔有
  • 不可搶佔條件:進程已獲得的資源,在未使用完之前,不能被搶佔,只能在使用完時自己釋放
  • 佔用且申請條件:進程至少佔有一個資源,但又申請新的資源
  • 循環等待:存在一個進程之間互相等待的循環

死鎖預防

  • 打破互斥條件:即允許多個進程同時訪問某些資源。但有些資源是不允許同時被訪問的,如打印機等等,這是由資源本身的屬性所決定的。所以,這種辦法並無實用價值。
  • 打破不可搶佔條件:即允許進程強行從佔有者那裏搶佔某些資源。就是說,當一個進程已佔有了某些資源,它又申請新的資源,但不能立即被滿足時,它必須釋放所佔有的全部資源,以後再重新申請。但這種方法實現起來比較困難,會減低系統性能
  • 打破佔有且申請條件:實施資源預先分配策略。即進程在運行前一次性的向系統申請它所需要的全部資源,如果全部資源得不到滿足,則不分配任何資源,此進程暫不運行。缺點:1.進程運行所需的全部資源是不好預測的。2.資源的利用率低。3.降低了進程的併發性,進程延遲運行
  • 打破循環條件:實施資源有序分配策略。即把所有資源進行線性排隊,並賦予不同的序號,所有進程對資源的請求必須嚴格按照資源序列號遞增的次序提出。缺點:1.給所有資源進行編號,增加了系統的開銷。2.爲了遵循按序號申請的次序,要提前申請暫不使用的資源,增加了進程對資源的佔用時間。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章