當前位置:首頁 » 操作系統 » 銀行家演算法安全序列怎麼找

銀行家演算法安全序列怎麼找

發布時間: 2022-04-30 03:13:30

① 銀行家演算法的安全序列怎麼尋找

1)安全。
安全序列 P1 P3 P4 P0 P2
(從第一個進程開始,找所需資源數小於系統可用資源數的進程(P1 Need(1 2 2) < Availabe(3 3 2)),該進程需求滿足後把其所有資源還給系統(Available(5 3 2),依此。)

2)不能.
如果滿足P1的請求Request(1,0,2)後,P1的需求沒有完全滿足,也就是說P1獲得該資源後不會結束,依然在等待系統分配資源。
而系統剩餘資源為(2,3,0)不能再滿足任何進程的需求,處在不安全狀態,可能產生死鎖。

② 銀行家演算法(操作系統)

1、這是安全狀態:
P1的需求小於可用資源數,先滿足P1的請求,然後回收P1資源:可用資源變為 (3,3,2)+(2,0,0)=(5,3,2);
這時P3可分配,P3結束後回收資源,可用資源為(5,3,2)+(2,1,1)=(7,4,3)
這時P0可分配,P0結束後回收資源,可用資源為(7,4,3)+(0,1,0)+(7,5,3)
接下來是P2,結束後可用資源為(7,5,3)+(3,0,2)=(10,5,5)
最後分配P4,結束後可用資源為(10,5,5)+(0,0,2)=(10,5,7)
這樣得到一個安全序列:P1-P3-P0-P2-P4,所以T0狀態是安全的。

2、T0時刻P1請求(1,1,2)<可用資源數(3,3,2),可以直接滿足。

③ 銀行家演算法得出的安全序列有順序嗎如{ p3,p0,p4 ,p2, p1}和{ p3,p0,p4 ,p1, p2}是一樣的嗎

不一樣
銀行家演算法假定前提如下:
p0 ~ p 4 各掌握有銀行家的若干資源,但要求完成他們的目標,分別還需要請求若干資源。
現在,銀行家已經付出很多資源,手裡資源不多。而pX 們另外需求的資源也是大小不一的。
而一旦銀行家所有資源支出後,pX中仍然沒有誰完成任務,這就死鎖了(每個進程都把握一部分資源,並還在要資源,而資源已經木有了)
==========================
現在,演算法得出這樣一條順序,先優先供應p3,等p3完成他的線程後,p3會釋放所佔有的資源。銀行家(系統)利用p3所有的資源和自己手裡剩餘的資源按順序供應p0,p4 等等。
現在假定 供應完 p4後,銀行家手中握有資源 10單位
p1 總共需要20單位才能完成他的進程,而p1手中現有5單元
p2 總共需要10單位才能完成他的進程,而p2手中已經有了8單元了
請問,系統應該先供應哪個線程?
答案必然是先p2再p1
因為使用2資源供應完p2(10單位才能完成,已有8單位,還要2單位),p2完成任務後,釋放所有資源,系統累計資源才有 10 - 2 + 10 = 18 單位的資源 ,才能滿足p1 的 15( = 20 -5 )單位資源的請求。
而若反之, 所有資源投入p1 , p1 完成進度 15 / 20 p2 完成進度 8 / 10 這就徹底死了
所以 xxxxx p2 p1 能活, xxxxx p1 p2 會死

特別說明的是,銀行家演算法可以得到不止一條安全順序。能被銀行家證明可行的演算法都是死不了的演算法

④ 銀行家演算法的多個安全序列的輸出

銀行家演算法=-- -

1. 安全狀態: 在某時刻系統中所有進程可以排列一個安全序列:{P1,P2,`````Pn},剛稱此時,系統是安全的.
所謂安全序列{P1,P2,`````Pn}是指對於P2,都有它所需要剩餘資源數量不大於系統掌握的剩餘的空間資源與所有Pi(j<i)所佔的資源之和.
2.不安全狀態可能產生死鎖.
目前狀態 最大需求 尚需
P1 3 9 6
P2 5 10 5
P3 2 4 2

在每一次進程中申請的資源,判定一下,若實際分配的話,之後系統是否安全.
3.銀行家演算法的思路:
1),進程一開始向系統提出最大需求量.
2),進程每次提出新的需求(分期貸款)都統計是否超出它事先提出的最大需求量.
3),若正常,則判斷該進程所需剩餘剩餘量(包括本次申請)是否超出系統所掌握的
剩餘資源量,若不超出,則分配,否則等待.
4.銀行家演算法的數據結構.
1),系統剩餘資源量A[n],其中A[n]表示第I類資源剩餘量.
2),各進程最大需求量,B[m][n],其中B[j][i]表示進程j對i
類資源最大需求.
3),已分配資源量C[m][n],其中C[j][i]表示系統j程已得到的第i資源的數量.
4),剩餘需求量.D[m][n],其中D[j][i]對第i資源尚需的數目.
5.銀行家演算法流程:當某時刻,某進程時,提出新的資源申請,系統作以下操作:
1),判定E[n]是否大於D[j][n],若大於,表示出錯.
2),判定E[n]是否大於系統剩餘量A[n],若大於,則該進程等待.
3),若以上兩步沒有問題,嘗試分配,即各變數作調整.
4),按照安全性推測演算法,判斷,分配過後,系統是否安全,若安全,則實際分配,否則,撤消分配,讓進程等待.
6."安全性檢測"演算法
1),先定義兩個變數,用來表示推算過程的數據.
F[n]=A[n],表示推算過程中,系統中剩餘資源量的變化.
J[n]=False表示推算過程中各進程是否假設"已完成"
2),流程:
在"剩餘"的進程中(在推算)過程中,一些進程假設已完成,查找D[j][n]<=F[n]的進程,找到後令J[j]=True
(假設該進程完成),F[n]+D[j][n](該進程所佔資源釋放),如此循環執行.
若最後,所有的F[n]=True(在推算過程中,所有進程均可以完成),則表示(分配過後)系統是安全的,否則系統是不安全的.

⑤ 「銀行家演算法」是怎樣的一個演算法

銀行家演算法=-- -

1. 安全狀態: 在某時刻系統中所有進程可以排列一個安全序列:{P1,P2,`````Pn},剛稱此時,系統是安全的.
所謂安全序列{P1,P2,`````Pn}是指對於P2,都有它所需要剩餘資源數量不大於系統掌握的剩餘的空間資源與所有Pi(j<i)所佔的資源之和.
2.不安全狀態可能產生死鎖.
目前狀態 最大需求 尚需
P1 3 9 6
P2 5 10 5
P3 2 4 2

在每一次進程中申請的資源,判定一下,若實際分配的話,之後系統是否安全.
3.銀行家演算法的思路:
1),進程一開始向系統提出最大需求量.
2),進程每次提出新的需求(分期貸款)都統計是否超出它事先提出的最大需求量.
3),若正常,則判斷該進程所需剩餘剩餘量(包括本次申請)是否超出系統所掌握的
剩餘資源量,若不超出,則分配,否則等待.
4.銀行家演算法的數據結構.
1),系統剩餘資源量A[n],其中A[n]表示第I類資源剩餘量.
2),各進程最大需求量,B[m][n],其中B[j][i]表示進程j對i
類資源最大需求.
3),已分配資源量C[m][n],其中C[j][i]表示系統j程已得到的第i資源的數量.
4),剩餘需求量.D[m][n],其中D[j][i]對第i資源尚需的數目.
5.銀行家演算法流程:當某時刻,某進程時,提出新的資源申請,系統作以下操作:
1),判定E[n]是否大於D[j][n],若大於,表示出錯.
2),判定E[n]是否大於系統剩餘量A[n],若大於,則該進程等待.
3),若以上兩步沒有問題,嘗試分配,即各變數作調整.
4),按照安全性推測演算法,判斷,分配過後,系統是否安全,若安全,則實際分配,否則,撤消分配,讓進程等待.
6."安全性檢測"演算法
1),先定義兩個變數,用來表示推算過程的數據.
F[n]=A[n],表示推算過程中,系統中剩餘資源量的變化.
J[n]=False表示推算過程中各進程是否假設"已完成"
2),流程:
在"剩餘"的進程中(在推算)過程中,一些進程假設已完成,查找D[j][n]<=F[n]的進程,找到後令J[j]=True
(假設該進程完成),F[n]+D[j][n](該進程所佔資源釋放),如此循環執行.
若最後,所有的F[n]=True(在推算過程中,所有進程均可以完成),則表示(分配過後)系統是安全的,否則系統是不安全的.
參考資料:http://huangqiyu.blogchina.com/419807.html

⑥ 銀行演算法怎麼求出全部安全序列

先說一下銀行家的演算法:
設進程cusneed提出請求REQUEST
[i],則銀行家演算法按如下規則進行判斷。
(1)如果REQUEST
[cusneed]
[i]<=
NEED[cusneed][i],則轉(2);否則,出錯。
(2)如果REQUEST
[cusneed]
[i]<=
AVAILABLE[i],則轉(3);否則,等待。
(3)系統試探分配資源,修改相關數據:
AVAILABLE[i]-=REQUEST[cusneed][i];
ALLOCATION[cusneed][i]+=REQUEST[cusneed][i];
NEED[cusneed][i]-=REQUEST[cusneed][i];
(4)系統執行安全性檢查,如安全,則分配成立;否則試探險性分配作廢,系統恢復原狀,進程等待。
=================================================
題目中的計算過程:
先算出每個進程還需要多少進程才能滿足,即Request的值
=
Need
-
Allocation
進程名
Allocation
Need
Request
Available
ABC
ABC
ABC
ABC
P1
4
0
5
4
0
11
0
0
6
2
3
3
P2
4
0
2
5
3
6
1
2
4
P3
2
1
4
4
2
5
2
1
1
P4
2
1
2
5
5
9
3
4
7
P5
3
1
3
4
2
4
1
1
1
第一題A項p3
p1
p4
p2
p5
先分配給P3,其Request(2,1,1)
<
available(2,2,3)
滿足,分配資源等待P3完成,P3進程完成之後,Available
=
(2,1,4)
+
(2,3,3)
=
(4,4,7)
然後分配給p1,其Request(0,0,6)
<
available(4,4,7),可以滿足資源,分配資源給P1,P1完成任務釋放資源Available
=
(4,0,5)
+(4,4,7)
=
(8,4,12)
接著P4,request(3
4
7)
<
available(8,4,12),可以滿足資源,分配資源給P4,P4完成任務釋放資源Available
=
(2,1,2)
+(8,4,12)
=
(10,5,14)
接著p2,request(1
2
4)
<
available(10,5,14)可以滿足資源,分配資源給P4,P4完成任務釋放資源Available
=
(4,0,2)+
(10,5,14)
=
(14,5,16)
最後P5,request(1
1
1)
<
available(14,5,16)可以滿足資源,分配資源給P4,P4完成任務,資源全部釋放,變為(3
1
3
)+
(14,5,16)
=
(17,6,19)
所以A是安全序列。
同理分析B
p1
p3
p5
p2
p4,先分配給P1的話Request(0,0,6)
>
available(2,3,3),C資源不滿足,所以該序列不安全。
分析C項p4
p2
p3
p5
p1,先分配給p4,
Request(3,4,7)
>
available(2,3,3),ABC資源都不滿足,該序列不安全。
分析D項p2
p3
p1
p4
p5,先分配給P2,Request(1,2,4)
>
available(2,3,3),C資源不滿足,所以該序列不安全。
第二題,分析方法跟上面的一樣,只是比較費時。如果單選的話,看一下答案,D項,先分配給P4,顯然完成P4還需(
3
4
7)
,其大於
available,所D項不安全。

⑦ 求n個數的全排列,n不定。用c語言。用於銀行家演算法中求安全序列

好久沒用c了,所以代碼可能要用到偽代碼
先定義a[maxn]
用子函數遞歸
void p(int x)
{
if (n == x+1)
{
//foreach a print
//輸出數組a
}
for (int i=1 to n)
{
a[x] = i;
p(x+1);
a[x] = 0;
}
}
主函數main調用p(n)

⑧ 銀行家演算法安全序列怎麼判斷

先說一下銀行家的演算法:
設進程cusneed提出請求REQUEST [i],則銀行家演算法按如下規則進行判斷。
(1)如果REQUEST [cusneed] [i]<= NEED[cusneed][i],則轉(2);否則,出錯。
(2)如果REQUEST [cusneed] [i]<= AVAILABLE[i],則轉(3);否則,等待。
(3)系統試探分配資源,修改相關數據:
AVAILABLE[i]-=REQUEST[cusneed][i];
ALLOCATION[cusneed][i]+=REQUEST[cusneed][i];
NEED[cusneed][i]-=REQUEST[cusneed][i];
(4)系統執行安全性檢查,如安全,則分配成立;否則試探險性分配作廢,系統恢復原狀,進程等待。
=================================================
題目中的計算過程:
先算出每個進程還需要多少進程才能滿足,即Request的值 = Need - Allocation
進程名 Allocation Need Request Available
ABC ABC ABC ABC
P1 4 0 5 4 0 11 0 0 6 2 3 3
P2 4 0 2 5 3 6 1 2 4
P3 2 1 4 4 2 5 2 1 1
P4 2 1 2 5 5 9 3 4 7
P5 3 1 3 4 2 4 1 1 1
第一題A項p3 p1 p4 p2 p5
先分配給P3,其Request(2,1,1) < available(2,2,3) 滿足,分配資源等待P3完成,P3進程完成之後,Available = (2,1,4) + (2,3,3) = (4,4,7)
然後分配給p1,其Request(0,0,6) < available(4,4,7),可以滿足資源,分配資源給P1,P1完成任務釋放資源Available = (4,0,5) +(4,4,7) = (8,4,12)
接著P4,request(3 4 7) < available(8,4,12),可以滿足資源,分配資源給P4,P4完成任務釋放資源Available = (2,1,2) +(8,4,12) = (10,5,14)
接著p2,request(1 2 4) < available(10,5,14)可以滿足資源,分配資源給P4,P4完成任務釋放資源Available = (4,0,2)+ (10,5,14) = (14,5,16)
最後P5,request(1 1 1) < available(14,5,16)可以滿足資源,分配資源給P4,P4完成任務,資源全部釋放,變為(3 1 3 )+ (14,5,16) = (17,6,19)
所以A是安全序列。
同理分析B p1 p3 p5 p2 p4,先分配給P1的話Request(0,0,6) > available(2,3,3),C資源不滿足,所以該序列不安全。
分析C項p4 p2 p3 p5 p1,先分配給p4, Request(3,4,7) > available(2,3,3),ABC資源都不滿足,該序列不安全。
分析D項p2 p3 p1 p4 p5,先分配給P2,Request(1,2,4) > available(2,3,3),C資源不滿足,所以該序列不安全。

第二題,分析方法跟上面的一樣,只是比較費時。如果單選的話,看一下答案,D項,先分配給P4,顯然完成P4還需( 3 4 7) ,其大於 available,所D項不安全。

⑨ 銀行家演算法沒有給出avaible怎樣求安全序列

樓上已經說的比較詳細了,再提一點安全系列是不唯一的,也就是說可能有很多種,你只要找到一種即可

⑩ (C++)銀行家演算法安全序列有多個,我怎麼確定我找的安全序列是哪種方式。就比如說

一種是深度優先搜索,一種是廣度優先搜索,都行啊

熱點內容
小說分銷系統源碼 發布:2024-10-05 07:13:54 瀏覽:631
主板能存儲數據嗎 發布:2024-10-05 07:13:22 瀏覽:89
安卓文件管理器在哪裡打開手機 發布:2024-10-05 07:12:19 瀏覽:224
個人網站源碼html 發布:2024-10-05 06:59:47 瀏覽:409
安卓fc下載游戲在哪個文件夾 發布:2024-10-05 06:51:05 瀏覽:765
演算法狼人殺 發布:2024-10-05 06:50:21 瀏覽:346
ibm伺服器怎麼做raid5 發布:2024-10-05 06:46:20 瀏覽:854
wifi如何換密碼 發布:2024-10-05 06:25:39 瀏覽:549
ubuntu遠程訪問mysql 發布:2024-10-05 06:17:29 瀏覽:223
centos配置後怎麼做 發布:2024-10-05 06:08:59 瀏覽:70