死锁的4个必要条件和处理策略
生活随笔
收集整理的這篇文章主要介紹了
死锁的4个必要条件和处理策略
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、死鎖的例子:
? ? ? 資源A、B,進程C、D描述如下:
資源A和資源B,都是不可剝奪資源,
現在進程C已經申請了資源A,進程D也申請了資源B,
進程C接下來的操作需要用到資源B,而進程D恰好也在申請資源A,
進程C、D都得不到接下來的資源,那么就引發了死鎖。
2、死鎖的四個必要條件:
互斥條件(Mutual exclusion):資源不能被共享,只能由一個進程使用。
請求與保持條件(Hold and wait):已經得到資源的進程可以再次申請新的資源。
不可剝奪剝奪條件(No pre-emption):已經分配的資源不能從相應的進程中被強制地剝奪。
環路條件/循環等待條件(Circular wait):系統中若干進程組成環路,該環路中每個進程都在等待相鄰進程正占用的資源。
3、處理死鎖的策略
1) 死鎖預防:
? ? ?預先靜態分配法:破壞了“不可剝奪條件”
? ? ?資源有序分配法:破壞了“環路條件”
2)死鎖避免:設法破壞4個必要條件之一,嚴格防止死鎖的發生
? ? ?銀行家算法:若發現分配資源后進入不安全狀態,則不予分配;若扔處于安全狀態,則實施分配。
3)死鎖檢測:
? ? ?允許死鎖產生,定時地運行一個死鎖檢測程序,判斷系統是否發生死鎖。
4)死鎖解除:
?? 資源剝奪法
撤銷進程法
? ? ??
總結
以上是生活随笔為你收集整理的死锁的4个必要条件和处理策略的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux进程间通讯
- 下一篇: ios多线程开发的常用三种方式