操作系統:死鎖與饑餓

目錄

死鎖概念

饑餓與餓死概念

饑餓和死鎖對比

死鎖類型

死鎖條件(Coffman條件)

死鎖恢復方法

死鎖避免

安全狀態與安全進程序列:

銀行家算法:?

死鎖檢測時機(了解):

死鎖檢測

死鎖案例

過河問題


死鎖概念

定義:一組進程中的每一個進程,均無限期地等待此組進程中某個其他進程占有的資源,因而永遠無法得到的資源,這種現象稱為進程死鎖。

由定義可得:參與死瑣的進程至少有二個; 每個參與死鎖的進程均等待資源。

饑餓與餓死概念

饑餓:沒有時間上界的等待。排隊等待、忙式等待。

餓死:等待時間超過極限,進程即使完成也不再具有實際意義時

饑餓和死鎖對比

1、死鎖進程處于等待狀態,餓死進程已經死了。

2、死鎖(一定發生了循環等待)可以檢測,餓死不可以。

3、死鎖進程等待永遠不會被釋放的資源,餓死進程等待會被釋放但卻不會分配給自己的資源,其等待時限沒有上限。

4、死鎖一定涉及多個進程,而饑餓或被餓死的進程可能只有一個。

死鎖類型

1. ?競爭資源引起的死鎖:

??例如:P1需要4臺打印機,P2需要兩臺打印機。P1申請了3臺,P2申請了一臺,造成死鎖。

?2、進程通訊引起的死鎖

?3、其它原因引起的死鎖

死鎖條件(Coffman條件)

1、資源獨占(mutual exclusion):資源被進程占用

2、不可搶占(non preemption):不可強制搶奪被進程占用的資源

3、保持申請(hold-while-applying):申請新資源并不釋放它占用的資源

4、循環等待(circular wait):存在一個進程循環等待序列,P1等P2,P2等P3,P3等P1的循環等待。

死鎖恢復方法

1. 系統重新啟動:? 簡單,代價大

2.終止進程(process termination):終止環路上占有資源的進程并收回它們占有的資源。

3.剝奪資源(resource preemption):剝奪進程所占用的全部或部分資源。

4.進程回退(rollback):回退到以前沒有發生死鎖的狀態。

死鎖避免

死鎖避免是保證系統不會進入死鎖狀態的動態策略。

安全狀態與安全進程序列:

安全狀態:所有進程可以按照某一次序安全運行,說明系統處于安全狀態。

安全進程序列: 系統出于安全狀態,可以按照某一次序安全運行,這個次序叫安全進程序列

銀行家算法:?

數據結構:

m:資源類總數   n:進程總數
int Available:[m];   //系統可用資源
int Claim[n,m];      //進程最大需求
int Allocation[n,m]; //當前分配
int Need[n,m];       //尚需資源
int Request[n,m];    //當前請求資源
int Work[m];         //記錄可用資源 
int Finish[n];       //記錄進程是否可以執行完

安全性檢測算法?

1、初始化Work數組=Available數組,Finish = {false}。

2、循環查找Need[i]<=Work[i] 且 Finish[i]=false,找到轉3,未找到轉4。

3、Work+=Allocation[i](相當于釋放資源),Finish[i]=true,記錄i到安全序列。

4、對于所有i,存在Finish[i]=true,則系統處于安全狀態,從而得到安全序列。

資源分配算法

1、判斷請求資源量是否小于需求資源量,若沒有則返回錯誤。

2、判斷請求資源量是否小于可用資源量,若沒有則等待。

3、分配資源,可用資源減少,進程占用資源增加,需求資源減少。

4、運行安全性檢測算法,檢測系統是否安全,不安全則歸還分配資源,并轉入等待。

5、系統安全則確認資源分配。

死鎖檢測時機(了解):

考慮因素:死鎖發生頻度,死鎖影響的進程。

1、等待時檢測

2、定時檢測

3、資源(eg. CPU)利用率下降時檢測

死鎖檢測

1、初始化Work=Available,Finish={false}。

2、查找滿足條件Request[i]<=Work,Finish[i]=false的i,轉到3,沒找到轉到4。

3、Work+=Allocation[i](相當于釋放資源),Finish[i]=true,繼續轉2。

4、對于所有i,存在Finish[i]=true,則系統未死鎖,反之系統死鎖。

?死鎖案例

過河問題

? ? ? ? 這里要求找到S最大人數,不會死鎖情況下,橋上可以容納的最大人數。其次每一個S0-S8代表石塊,P(Sn) 代表石塊占用,V(Sn)代表石塊釋放。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/62647.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/62647.shtml
英文地址,請注明出處:http://en.pswp.cn/web/62647.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Prisoner’s Dilemma

囚徒困境博弈論解析 什么是囚徒困境&#xff1f; 囚徒困境&#xff08;Prisoner’s Dilemma&#xff09;是博弈論中的一個經典模型&#xff0c;用來分析兩名玩家在非合作環境下的決策行為。 其核心在于玩家既可以選擇合作也可以選擇背叛&#xff0c;而最終的結果取決于雙方的…

RPO: Read-only Prompt Optimization for Vision-Language Few-shot Learning

文章匯總 想解決的問題對CoOp的改進CoCoOp盡管提升了性能,但卻增加了方差(模型的準確率波動性較大)。 模型的框架一眼看去,跟maple很像(maple跟這篇文章都是2023年發表的),但maple的視覺提示是由文本提示經過全連接轉換而來的,而這里是文本提示和視覺提示是獨立的。另外m…

『MySQL 實戰 45 講』24 - MySQL是怎么保證主備一致的?

MySQL是怎么保證主備一致的&#xff1f; MySQL 主備的基本原理 基本的主備切換流程 狀態 1&#xff1a;客戶端的讀寫都直接訪問節點 A&#xff0c;而節點 B 是 A 的備庫狀態 2&#xff1a;切換時&#xff0c;讀寫訪問的都是節點 B&#xff0c;而節點 A 是 B 的備庫注意&…

自薦一部IT方案架構師回憶錄

作者本人畢業于一個不知名大專院校&#xff0c;所讀專業計算機科學技術。2009年開始IT職業生涯&#xff0c;至今工作15年。擅長TSQL/Shell/linux等技術&#xff0c;曾經就職于超萬人大型集團、國內頂級云廠商、央國企公司。參與過運營商大數據平臺、大型智慧城市ICT、云計算、人…

python數據分析之爬蟲基礎:selenium詳細講解

目錄 1、selenium介紹 2、selenium的作用&#xff1a; 3、配置瀏覽器驅動環境及selenium安裝 4、selenium基本語法 4.1、selenium元素的定位 4.2、selenium元素的信息 4.3、selenium元素的交互 5、Phantomjs介紹 6、chrome handless模式 1、selenium介紹 &#xff08;1…

【數據結構——查找】順序查找(頭歌實踐教學平臺習題)【合集】

目錄&#x1f60b; 任務描述 相關知識 測試說明 我的通關代碼: 測試結果&#xff1a; 任務描述 本關任務&#xff1a;實現順序查找的算法。 相關知識 為了完成本關任務&#xff0c;你需要掌握&#xff1a;1.根據輸入數據建立順序表&#xff0c;2.順序表的輸出&#xff0c;…

光伏電站建設成本利潤估算

?截至2024年9月底,全國光伏發電裝機容量達到7.7億千瓦,同比增長48.4%。其中集中式光伏4.3億千瓦,分布式光伏3.4億千瓦。2024年前三季度,全國光伏發電量6359億千瓦時,同比增長45.5%。全國光伏發電利用率97.2%,同比下降1.1個百分點.早在今年2月份,中國光伏行業協會名譽理…

create-react-app react19 搭建項目報錯

報錯截圖 此時運行會報錯&#xff1a; 解決方法&#xff1a; 1.根據提示安裝依賴法 執行npm i web-vitals然后重新允許 2.刪除文件法 在index.js中刪除對報錯文件的引入&#xff0c;刪除報錯文件

scala的集合性能2

可變集合\n可變集合允許在原地修改數據&#xff0c;適合需要頻繁更新的場景。Scala 的可變集合包括 ArrayBuffer、HashSet和HashMap。 1. ArrayBuffer\nArrayBuffer 是一個可變的動態數組&#xff0c;提供高效的隨機訪問和添加操作。 import scala.collection.mutable.ArrayB…

【Ubuntu】腳本自動化控制終端填充

1.sh腳本文件控制終端寫入命令 在SLAM算法中&#xff0c;每次啟動vins都需要起很多終端&#xff0c;盡管使用了超級終端Terminator可以終端內劃分看起來更加便捷&#xff0c;但是每次起算法的命令還是要自己輸入&#xff0c;已經被麻煩了兩年了&#xff0c;今天突然想寫寫一個…

【自學】Vues基礎

學習目錄 Vues基礎本地應用網絡應用綜合應用 工具的準備 我個人比較喜歡使用HTMLDROWNER&#xff0c;學習資料推薦使用VC&#xff0c;僅供選擇吧 前置知識 HTMLCSSJSAJAX&#xff1a;這個是學習資料博主推薦的 個人感覺認真學好HTMLCSSJS理解vues基礎很容易上手 官方網址…

Scratch 消滅字母小游戲

背景 最近嘗試一邊自學Scratch&#xff0c;一邊嘗試教給小孩&#xff0c;看他打字時在鍵盤上亂打一氣&#xff0c;想起來自己小時候玩過的學習機打字母游戲&#xff0c;就想給他下載一個。結果網上看到的代碼&#xff0c;要么質量太差&#xff08;有26個字母就要寫 26 個判斷&…

python調用matlab函數(內置 + 自定義) —— 安裝matlab.engine

文章目錄 一、簡介二、安裝matlab.engine2.1、基于 CMD 安裝2.2、基于 MATLAB 安裝&#xff08;不建議&#xff09; 三、python調用matlab函數&#xff08;內置 自定義&#xff09; 一、簡介 matlab.engine&#xff08;MATLAB Engine API for Python&#xff09;&#xff1a;…

pytroch環境安裝-pycharm

環境介紹 安裝pycharm 官網下載即可&#xff0c;我這里已經安裝&#xff0c;就不演示了 安裝anaconda 【官網鏈接】點擊下載 注意這一步選擇just me 這一步全部勾上 打開 anaconda Prompt 輸入conda create -n pytorch python3.8 命令解釋&#xff1a;創建一個叫pytorch&…

Photoshop提示錯誤彈窗dll缺失是什么原因?要怎么解決?

Photoshop提示錯誤彈窗“DLL缺失”&#xff1a;原因分析與解決方案 在創意設計與圖像處理領域&#xff0c;Photoshop無疑是眾多專業人士和愛好者的首選工具。然而&#xff0c;在使用Photoshop的過程中&#xff0c;有時會遇到一些令人頭疼的問題&#xff0c;比如突然彈出的錯誤…

自己總結:selenium高階知識

全篇大概10000字&#xff08;含代碼&#xff09;&#xff0c;建議閱讀時間30min 一、等待機制 如果有一些內容是通過Ajax加載的內容&#xff0c;那就需要等待內容加載完畢才能進行下一步操作。 為了避免人為操作等待&#xff0c;會遇到的問題&#xff0c; selenium將等待轉換…

上海亞商投顧:創業板指震蕩調整 機器人概念股再度爆發

上海亞商投顧前言&#xff1a;無懼大盤漲跌&#xff0c;解密龍虎榜資金&#xff0c;跟蹤一線游資和機構資金動向&#xff0c;識別短期熱點和強勢個股。 一.市場情緒 滬指昨日沖高回落&#xff0c;深成指、創業板指盤中跌超1%&#xff0c;尾盤跌幅有所收窄。機器人概念股逆勢爆…

(Linux)CentOS7離線安裝MinIO(超詳細)

目錄 前言1. 下載2. 安裝VMware3. 安裝CentOS4. 離線安裝MinIO4.1. ssh工具連接CentOS4.2. 上傳MinIO離線包4.2.1 創建data目錄4.2.2 上傳RPM包到data目錄4.2.3 安裝RPM包4.2.4 創建MinIO數據目錄4.2.5 配置 MinIO 服務4.2.6 啟動 MinIO4.2.7 開放端口 4.2.8 訪問MinIO 創作不易…

【JavaWeb后端學習筆記】Maven項目管理

Maven 1、分模塊設計2、Maven繼承2.1 繼承關系2.2 版本鎖定 3、Maven聚合4、聚合與繼承的關系 1、分模塊設計 如果一個項目中含有大量的功能模塊。可以考慮將這些功能分模塊設計&#xff0c;逐一進行開發。例如將公共類可以定義在一個項目中&#xff0c;將通用工具類也放在一個…

HarmonyOS-高級(四)

文章目錄 應用開發安全應用DFX能力介紹HiLog使用指導HiAppEvent &#x1f3e1;作者主頁&#xff1a;點擊&#xff01; &#x1f916;HarmonyOS專欄&#xff1a;點擊&#xff01; ??創作時間&#xff1a;2024年12月11日11點18分 應用開發安全 應用隱私保護 隱私聲明彈窗的作…