![計算機課件補2死鎖_第1頁](http://file4.renrendoc.com/view11/M00/1B/2A/wKhkGWWptwiAfhv3AAB4JJcBhQA805.jpg)
![計算機課件補2死鎖_第2頁](http://file4.renrendoc.com/view11/M00/1B/2A/wKhkGWWptwiAfhv3AAB4JJcBhQA8052.jpg)
![計算機課件補2死鎖_第3頁](http://file4.renrendoc.com/view11/M00/1B/2A/wKhkGWWptwiAfhv3AAB4JJcBhQA8053.jpg)
![計算機課件補2死鎖_第4頁](http://file4.renrendoc.com/view11/M00/1B/2A/wKhkGWWptwiAfhv3AAB4JJcBhQA8054.jpg)
![計算機課件補2死鎖_第5頁](http://file4.renrendoc.com/view11/M00/1B/2A/wKhkGWWptwiAfhv3AAB4JJcBhQA8055.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
補充2
死鎖
提綱
■2.1死鎖的概念
■2.2死鎖的排除方法
2.1死鎖的概念
■1,死鎖的定義
□所謂死鎖,是指各并發(fā)進程彼此互相等待對方
所擁有的資源,且這些并發(fā)進程在得到對方的
資源之前不會釋放自己所擁有的資源。從而造
成大家都想得到資源而又都得不到資源,各并
發(fā)進程不能繼續(xù)向前推進的狀態(tài)。
例1:
一系統(tǒng)有2臺磁帶機(Til》
一兩個進程PIP2
PiP2
request(T^);request(TJ;
requesfffJ;request(TA);
useiTVT2);useiTvT2);
re/ease(T1yT2);re/easefT^Tj);
例2:
信號量A、8,初值1
P1P2
P(A);P(B)
P(B);P(A)
□□
例4:哲學(xué)家就餐
當每個哲學(xué)家均拿起左手的叉子時,都在等待右手叉子,陷入死鎖。
■死鎖的形式定義:
有并發(fā)進程P1,P2,…,Pn,它們共享資源R1,
R2,…,Rm(n>0,m>0,n>=m)。
□其中,每個Pid<i<n)擁有資源Rj(1<j<m),
直到不再有剩余資源。
□同時,各Pi又在不釋放Rj的前提下要求得到Rk
(k#j,1<k<m),從而造成資源的互相占有和
互相等待。
在沒有外力驅(qū)動的情況下,該組并發(fā)進程停止往
前推進,陷入永久等待狀態(tài)。
2.產(chǎn)生死鎖的必要條件
■⑴互斥條件(Mutualexclusion)o并發(fā)進程所要求和占
有的資源是不能同時被兩個以上進程使用或操作的,進程
對它所需要的資源進行排他性控制。
■(2)不剝奪條件(Nopreemption)。進程所獲得的資源在
未使用完畢之前,不能被其他進程強行剝奪,而只能由獲
得該資源的進程自己釋放。
■(3)部分分配(Holdandwait)。進程每次申請它所需要
的一部分資源,在等待新資源的同時繼續(xù)占用已分配到的
資源。
■(4)環(huán)路條件(Circularwait)。存在一種進程循環(huán)鏈,
鏈中每一個進程已獲得的資源同時被下一個進程所請求。
顯然,只要使上述4個必要條件中的某一個不滿足,則死鎖
就可以排除。
資源分配圖
頂點集:V;邊集E
V兩種類型:
P={P1,P2,…,Pn},系統(tǒng)包含的所有進程集合.
R={R1,R2,Rm},系統(tǒng)包含的所有資源集合.
請求邊:PifRj
分配邊:Rj-Pi
%
資源分配圖示例含有死鎖的資源分配圖示例
基本結(jié)論:
如果資源分配圖不含環(huán)路n沒有死鎖
如果資源分配圖含有環(huán)路n
—如果每類資源中包含1個資源,
則死鎖。
—如果每類資源中包含多個資源,
則可能死鎖。
含有環(huán)路,但沒有死鎖的資源分配圖
2.2死鎖的排除方法
■一般方法
□預(yù)防
□避免
口檢測與恢復(fù)
■有的系統(tǒng)(UNIX,Windows)
對死鎖采取忽略的策略,以減少系統(tǒng)開銷。
1.死鎖預(yù)防(DeadlockPrevention)
■采用某種策略,使得死鎖的必要條件在系統(tǒng)執(zhí)行的
任何時間都不滿足。
■主要方法:
□(1)打破資源的互斥和不可剝奪兩個必要條件
□(2)打破資源的部分分配必要條件。
□(3)打破死鎖的環(huán)路必要條件
(1)打破資源的互斥和不可剝奪兩個必要條件
■例如:允許進程同時訪問某些資源等。
■缺陷:不能解決訪問那些不允許被同時訪問的資源
時所帶來的死鎖問題。
■通常是不可取的。
(2)打破資源的部分分配必要條件
■預(yù)先靜態(tài)分配法:
□預(yù)先分配各并發(fā)進程所需要的全部資源。
□如某個進程的資源得不到滿足時等待。
■缺點:
□(1)進程在執(zhí)行之前需提出它所需要的全部資源
□(2)進程只有在所有要求資源都得到滿足后才開始執(zhí)行
□(3)資源利用率低
□(4)降低了進程的并發(fā)性
(3)打破死鎖的環(huán)路必要條件
把資源分類按順序排列,使進程在申請、保持資源時不形成
環(huán)路。
有序資源使用法:
如有m種資源,則列出<口2
若進程Pi提出申請資源Ri,則它今后只能申請比Ri級別更高的
資源Rj(Ri<Rj)。
釋放資源時必須是Rj先于Ri被釋放,從而避免環(huán)路的產(chǎn)生。
例如:F(tapedrive)=1F(diskdrive)=5F(Printer)=12
如果一個進程一旦申請了磁盤驅(qū)動器,則不能再申請磁帶機。
缺點:限制了進程對資源的請求。
證明:
假設(shè)系統(tǒng)存在環(huán)路:P1F2F3,…Pn
???F(Ri)vF(R2);F(R2)<F(R3);F(R3)<F(R4);...F(Rn)<F(%)
???F(Ri)<F(凡);
即產(chǎn)生矛盾結(jié)果,所以系統(tǒng)不會存在環(huán)路。
思考:對哲學(xué)家就餐問題,分別用以上兩種方法預(yù)防死
鎖如何實現(xiàn)。
2.死鎖避免(DeadlockAvoidance)
■系統(tǒng)在分配資源時,根據(jù)資源的使用情況提前做出
預(yù)測,從而避免死鎖的發(fā)生。
設(shè)并發(fā)進程pLp2….pn(nN1)共享不同類型的資源R1,
R2,…,Rm(m>1),每一Ri有固定的單元數(shù)目Ci
(1<i<n)o
安全八亦_,
------k分酉己
可滿足請求檢測
不安全,不分配
系統(tǒng)處于安全狀態(tài):存在安全進程序列<pl,p2,…,pn>
進程序列<pLp2…一pn>安全,pl,p2,…,pn可依次進行完。
例:設(shè)某系統(tǒng)共有3個進程(PLP2、P3),共享12臺磁
帶機,系統(tǒng)在某時刻的狀態(tài)為:
進程最大需求已分配還需
P11055
P2422
P3927
系統(tǒng)可用的磁帶機:3
問題:
(1)此時系統(tǒng)是否安全?
(2)P3申請一臺磁帶機,能否滿足?
(3)P1申請一臺磁帶機,能否滿足?
銀行家算法(ContJ
Bankersalgorithm,E.W.Dijkstra.
進程:事先申明所需資源最大量(并不分配)
系統(tǒng):對每個可滿足的資源申請命令進行安全性檢查。
P={pl,p2,…,pn};
R={rl/r2,.../rm);
銀行家算法(ContJ
數(shù)據(jù)結(jié)構(gòu):
Available:array[l..m]ofinteger;〃系統(tǒng)可用資源
Max:array[l..n/l..^n]ofinteger;〃進程最大需求
Allocation:array[l..n/l..m]ofinteger;//當前分酉己
Need:array[l..n/l..m]ofinteger;〃尚需資源
Request:array[l..n/l..m]ofinteger;〃當前請求
臨時變量:
Work:array[l..m]ofinteger;
Finish:array[l..n]ofboolean;
銀行家算法(ContJ
設(shè)X,Y為下標L.m的一維數(shù)組:
X<Y?Vj(l<j<m)9X[j]<Y[j]
X:=Y?Vj(l<j<m)9X[j]:=Y[j]
X:=coVj(l<j<m),X[j]:=c
X±Y<^Vj(l<j<m),X[j]±Y[j]
資源分配
Pi請求資源
T,F(xiàn)
-----Request[I]<Need[I]-----
安全性檢測算法
Work:=Available;
Finish:=false;
T有滿足條件的j:F
Finish[j]=false"
F
'rNeed[j]<Work
Vj,finish[j]=true——
Finish|j]=true;
Work:=Work+Allocation[j]
安全不安全
銀行家算法例子
R二{A(10),B(5),C(7)}
P={p0,pl,p2,p3,p4}
MaxAllocationNeedAvailableWorkFinish
ABCABCABCABCABC
PO:753010743332
pl:322200122
p2:902302600
p3:222211011
p4:433002431
安全進程序列:<pl,p3,p4,p2,p0>
p1請求:Request[1]=(1,0,2)
銀行家算法例子
假定分配:
ClaimAllocationNeedAvailableWorkFinish
ABCABCABCABCABC
PO:753010743230
pl:322302020
p2:902302600
p3:222211011
p4:433002431
安全進程序列:<pl,p3,p4,p0,p2>
p4請求:Request[4]=(3,3,0),
不能滿足,等待;
p0請求:Request[0]=(052,0),
不安全,等待。
銀行家算法的保守性
例子:R={A,B},申請a,b;釋放a,E
P={pl,p2}?pl:abab;p2:bbbaab
MaxAllocationNeedAvailableWorkFinish
ABABABABAB
pl:11001111
p2:110011
Request[l]=(l,O),
安全,分配。
銀行家算法的保守性
例子:R={A,B},申請a,b;釋放a,E
P={pl,p2}?pl:abab;p2:bbbaab
分配后:
ClaimAllocationNeedAvailable[WorkFinish
ABABABAB:AB
pl:11100101:
p2:1100iii
Request[2]=(0,l),
不安全,不分配
(分配不導(dǎo)致死鎖)
銀行家算法的缺點:
(1)死鎖避免需要占去系統(tǒng)較大的開銷。
(2)銀行家算法需要用戶給出各進程需要的最大
資源量。
銀行家算法練習(xí)
R={AB&D}
P={pl,p2,p3,p4,p5}
MaxAllocationNeedAvailable
ABCDABCDABCDABCD
Pl:001200121520
p2:17501000
p3:23561354
p4:06520632
p5:06560014
(1)此時,系統(tǒng)是否安全?如果安全,給出安全序列。
(2)若此時p2請求:Request[2]=(0,4,2,0),系統(tǒng)能否馬上滿足?
3,死鎖的檢測
■資源分配圖的化簡:
(1)找一進程Pi,其請求邊均能滿足,找不到轉(zhuǎn)(3)
(2)刪去與進程Pi相關(guān)的所有請求邊、分配邊,對Pi作
“已化簡”標記,goto(1);
(3)若所有進程均“已化簡”,則稱該資源分配圖是
可化簡的,否則該資源分配圖是不可化簡的。
■死鎖定理:
當且僅當狀態(tài)S對應(yīng)的資源分配圖是不可化簡的,
則S處于死鎖狀態(tài),不可化簡的進程是死鎖進程。
反之,系統(tǒng)處于安全狀態(tài)。
資源分配圖示例含有死鎖的資源分配圖示例
死鎖的檢測算法:
數(shù)據(jù)結(jié)構(gòu):
Available:arrayofinteger;
Allocation:array[l..n,l..m]ofinteger;
Request:array[l..n,l..m]ofinteger;
臨時變量:
Work:array[l..m]ofinteger;
Finish:array[1..n]ofboolean;
Work:=Available;
Finish:=false;
T有滿足條件的i:F
Finish[i]=false--------------------1
Request[i]<WorkTIF
-Vi,finish[i]=true—
Finish[i]=true;
ir
Work:=Work+Allocation[i]
無死鎖
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年專利許可使用合同策劃參考文本
- 2025年勞動力協(xié)同合作協(xié)議范本
- 2025年人力資源部門勞動合同模板
- 2025年二手房授權(quán)經(jīng)紀合同
- 2025年土地權(quán)屬轉(zhuǎn)讓合同模板
- 2025年醫(yī)療設(shè)備投資戰(zhàn)略聯(lián)盟協(xié)議書
- 2025年能源節(jié)約升級合同
- 2025年中小企業(yè)穩(wěn)定合作框架協(xié)議
- 2025年臨時施工合同摘要轉(zhuǎn)讓協(xié)議
- 2025年二手房屋獨家授權(quán)合同
- 二手車購買收據(jù)合同范本
- 2022版義務(wù)教育英語課程標準整體解讀課件
- 01 H5入門知識課件
- 2024年安全生產(chǎn)網(wǎng)絡(luò)知識競賽題庫及答案(共五套)
- 2024年實驗小學(xué)大隊委競選筆試試題題庫
- 學(xué)校辦公室衛(wèi)生制度
- 醫(yī)學(xué)生理學(xué)智慧樹知到答案2024年德州學(xué)院
- GB/T 44412-2024船舶與海上技術(shù)液化天然氣燃料船舶加注規(guī)范
- 小學(xué)三年級數(shù)學(xué)上冊口算題卡(加換算)
- 機械制造HSE協(xié)議書
- 2024-2030年中國靜脈血栓栓塞癥(VTE)防治行業(yè)市場全景監(jiān)測及投資策略研究報告
評論
0/150
提交評論