操作系统基础:进程知识笔记(三)
? ? ? ? ? ? ?
1、死鎖概念知識(shí)
計(jì)算機(jī)中存在許多互斥資源(打印機(jī))、軟件資源(進(jìn)程表、臨界區(qū))如果兩個(gè)進(jìn)程同時(shí)調(diào)用打印機(jī),或同時(shí)進(jìn)入臨界區(qū)必然會(huì)出現(xiàn)問題。
死鎖:指兩個(gè)以上的進(jìn)程互相要求對(duì)方已經(jīng)占有的資源導(dǎo)致無法繼續(xù)進(jìn)行下去的現(xiàn)象。
2、死鎖案例
2.1 進(jìn)程推進(jìn)順序不當(dāng)引起的死鎖
假設(shè)系統(tǒng)中有一臺(tái)打印機(jī)A、一臺(tái)掃描儀B,它們被進(jìn)程P1、P2共享,兩個(gè)進(jìn)程并發(fā)執(zhí)行,按照下面的順序請(qǐng)求和釋放資源
如果按照P1<a>P2<a>P1<b>P2<b>的順序執(zhí)行,會(huì)發(fā)生死鎖。首先P1<a>打印機(jī)A未被占用,可以正常執(zhí)行;P2<a>掃描儀沒有被占用所以可以正常執(zhí)行。
P1<b>時(shí)掃描儀被占用,所以需要等待。P1<b>時(shí)打印機(jī)被占用所以也需要等待。這樣導(dǎo)致雙方互相請(qǐng)求對(duì)方已經(jīng)占用的資源,系統(tǒng)就會(huì)發(fā)生死鎖。
?
? ? ? ? ? ? ?
?
?
2.2 同類資源分配不當(dāng)引起死鎖
如果系統(tǒng)中有m個(gè)資源被n個(gè)進(jìn)程共享,當(dāng)每個(gè)進(jìn)程都需要k個(gè)資源,并且m<nk時(shí),即資源數(shù)小于進(jìn)程所要求的的總數(shù)時(shí),可能會(huì)引起死鎖。
2.3 PV操作使用不當(dāng)引起死鎖
P2進(jìn)程從緩沖區(qū)取產(chǎn)品前,先執(zhí)行P(S2),因?yàn)镾2=-1,故P2等待;P1進(jìn)程將產(chǎn)品送到緩沖區(qū)后。執(zhí)行P(S1),因?yàn)镾1=-1,故P1等待。這樣P1、P2都無法繼續(xù)執(zhí)行下午,導(dǎo)致系統(tǒng)死鎖。
?
? ? ? ? ? ? ?
?
?
3、產(chǎn)生死鎖的原因和條件
原因:競(jìng)爭(zhēng)資源及進(jìn)程推進(jìn)順序非
必要條件:互斥條件、請(qǐng)求保持條件、不可剝奪條件、環(huán)路條件。
進(jìn)程資源有向圖:由方框(資源)、圓圈(請(qǐng)求資源)、有向邊組成。
?
? ? ? ? ? ? ?
?
4、死鎖的處理
鴕鳥策略(不理睬策略)、預(yù)防策略、避免策略、檢測(cè)與解除死鎖。
4.1 死鎖預(yù)防
采用某種策略顯示并發(fā)進(jìn)程對(duì)資源的請(qǐng)求,破壞死鎖產(chǎn)生的某個(gè)必要條件,是系統(tǒng)在任何時(shí)刻都不能滿足死鎖的必要條件。預(yù)防死鎖的兩種策略如下:
1、預(yù)先靜態(tài)分配法
破壞不可剝奪條件、預(yù)先分配所需資源,保證不出現(xiàn)資源等待的情況。缺點(diǎn):會(huì)降低資源利用率、并發(fā)程度。
2、資源有序分配法
破壞環(huán)路條件。把資源分類按順序排列,保證不形成環(huán)路。缺點(diǎn):限制了進(jìn)程對(duì)資源的請(qǐng)求、資源的排序會(huì)占用系統(tǒng)開銷。
4.2 死鎖避免
死鎖預(yù)防是設(shè)法破壞產(chǎn)生死鎖的必要條件之一,嚴(yán)格防止死鎖產(chǎn)生。死鎖避免并不是嚴(yán)格地限制死鎖產(chǎn)生的必要條件。最經(jīng)典的死鎖避免算法是Dijkstra提出的銀行家算法。缺點(diǎn):死鎖算法會(huì)占用系統(tǒng)的很大開銷。
4.3 死鎖檢測(cè)
該方法對(duì)資源分配不加限制,即允許死鎖產(chǎn)生,當(dāng)系統(tǒng)要定時(shí)運(yùn)行死鎖檢測(cè)程序,判斷系統(tǒng)是否發(fā)生死鎖,如果檢測(cè)到則設(shè)法解除。
4.4 死鎖解除
1、資源剝奪法:從一些進(jìn)程那里強(qiáng)行剝奪足夠數(shù)量的資源分配給死鎖進(jìn)程。
2、撤銷進(jìn)程法:按照某種策略撤銷死鎖進(jìn)程,直到解除死鎖。
IT技術(shù)分享社區(qū)
個(gè)人博客網(wǎng)站:https://programmerblog.xyz
文章推薦程序員效率:畫流程圖常用的工具程序員效率:整理常用的在線筆記軟件遠(yuǎn)程辦公:常用的遠(yuǎn)程協(xié)助軟件,你都知道嗎?51單片機(jī)程序下載、ISP及串口基礎(chǔ)知識(shí)硬件:斷路器、接觸器、繼電器基礎(chǔ)知識(shí)
?
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的操作系统基础:进程知识笔记(三)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Jetpack—LiveData组件的缺
- 下一篇: 操作系统基础:存储管理知识笔记(一)