網站首頁 編程語言 正文
解決死鎖的基本方法如下:
預防死鎖、避免死鎖、檢測死鎖、解除死鎖
解決四多的常用策略如下:
鴕鳥策略、預防策略、避免策略、檢測與解除死鎖
?
死鎖:指多個進程因競爭共享資源而造成的一種僵局,若無外力作用,這些進程都將永遠不能再 向前推進。
安全狀態與不安全狀態:安全狀態指系統能按某種進程順序來為每個進程分配其所需資源,直 至最大需求,使每個進程都可順利完成。若系統不存在這樣一個序列, 則稱系統處于不安全狀態。
?
產生死鎖的原因:(1)競爭系統資源 (2)進程的推進順序不當
產生死鎖的必要條件:
互斥條件:進程要求對所分配的資源進行排它性控制,即在一段時間內某資源僅為一進程所占用。
請求和保持條件:當進程因請求資源而阻塞時,對已獲得的資源保持不放。
不剝奪條件:進程已獲得的資源在未使用完之前,不能剝奪,只能在使用完時由自己釋放。
環路等待條件:在發生死鎖時,必然存在一個進程--資源的環形鏈。
解決死鎖的基本方法:
預防死鎖:
資源一次性分配:(破壞請求和保持條件)
可剝奪資源:即當某進程新的資源未滿足時,釋放已占有的資源(破壞不可剝奪條件)
資源有序分配法:系統給每類資源賦予一個編號,每一個進程按編號遞增的順序請求資源,釋放則相反(破壞環路等待條件)
?
避免死鎖:
預防死鎖的幾種策略,會嚴重地損害系統性能。因此在避免死鎖時,要施加較弱的限制,從而獲得 較滿意的系統性能。由于在避免死鎖的策略中,允許進程動態地申請資源。因而,系統在進行資源分配之前預先計算資源分配的安全性。若此次分配不會導致系統進入不安全狀態,則將資源分配給進程;否則,進程等待。其中最具有代表性的避免死鎖算法是銀行家算法。
?
檢測死鎖
首先為每個進程和每個資源指定一個唯一的號碼;
然后建立資源分配表和進程等待表,例如:
?
解除死鎖:
當發現有進程死鎖后,便應立即把它從死鎖狀態中解脫出來,常采用的方法有:
剝奪資源:從其它進程剝奪足夠數量的資源給死鎖進程,以解除死鎖狀態;
撤消進程:可以直接撤消死鎖進程或撤消代價最小的進程,直至有足夠的資源可用,死鎖狀態.消除為止;所謂代價是指優先級、運行代價、進程的重要性和價值等。
?
原文鏈接:https://blog.csdn.net/Beyond_2016/article/details/81359021
- 上一篇:時間戳處理的幾種方式
- 下一篇:修改node_modules的包
相關推薦
- 2022-12-15 Tensorflow2.1?MNIST圖像分類實現思路分析_python
- 2022-02-17 npm run serve Syntax Error: Error: Node Sass versi
- 2023-02-04 python?配置uwsgi?啟動Django框架的詳細教程_python
- 2022-04-04 Element ui NavMenu 導航菜單 template中的內容不顯示
- 2022-09-07 python中的字符轉運算符、字符串處理方式_python
- 2023-03-22 GoLang?string類型深入分析_Golang
- 2022-08-19 android九宮格鎖屏控件使用詳解_Android
- 2023-04-07 深度解讀Python如何實現dbscan算法_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支