導航:首頁 > 源碼編譯 > 銀行家演算法問題詳解

銀行家演算法問題詳解

發布時間:2023-08-05 10:23:00

⑴ 操作系統(死鎖避免)----銀行家演算法解題

死鎖:是指兩個以上的進程都因要求對方已經佔有的資源,導致無法運行下去的現象,死鎖是系統的一種出錯狀態,不僅浪費大量的系統資源,甚至會導纖賀余致整個系統的崩潰,所以死鎖是盡量預防和避免的。

產生死鎖的四個條件:

死鎖的處理

銀行家演算法是死鎖避免的重要演算法。

銀行家算毀滾法:資源==錢;收回資源==收回貸款;收不回資源==不會放貸;

例題:假設系統中有三類互斥資源R1,R2,R3。可用資源分別是9,8,5.在T0時刻系統有P1,P2,P3,P4,P5五個進程,這些進程最大的需求和已分配的資源如下所示,如果按_執行,那麼系統的狀態是安全的。

解:第一步:根據可用資源,可以求得剩餘資源。

R1=9-(1+2+2+1+1)=2

R2=8-(2+1+1+2+1)=1

R3=5-(1+1+0+0+3)=0

第二拍納步:根據剩餘資源求得還需要的資源數。

公式:還需資源(Need)=最大需求(Max)-已分配資源(Allocation)。

第三部,根據剩餘資源數,求出安全序列。

根據剩餘資源可得,p2可以執行(條件:每個值都必須≦剩餘資源)

由此可見安全序列為P2-->p4-->p5-->p1-->p3。

其實安全序列不是唯一的,這是為什麼呢?

大家可以看出來,現有資源要大於需要資源的情況下是有多種選擇的,因此安全序列不唯一。

⑵ 銀行家演算法得出的安全序列有順序嗎如{ 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)剩餘:A:1 B:5 C:2 D:0
因為P1已經滿足最大需求數,則P1資源最終是可回收,則可看做剩餘:A:1 B:5 C3 D:2

2)是安全狀態;因為按照剩餘:A:1 B:5 C3 D:2(此時P1已經結束)分別按照順序滿足各進程的最大需求是可以把全部進程完成的(順序可為:P3 --> P4 --> P5 --> p2)
3)系統會去滿足;若此時去滿足,則剩餘資源為:A:1 B:1 C1 D:2
此時,各進程的狀態:
已佔有資源 最大需求數
A B C D A B C D
P1 0 0 0 0 0 0 1 2 (已結束)
P2 1 4 2 0 1 7 5 0
P3 1 3 5 4 2 3 5 6
P4 0 6 3 2 0 6 5 2
P5 0 0 1 4 0 6 5 6
按照各進程狀態以及剩餘資源,可以知道之後P3,即可回收已分配的資源,即處安全狀態。

這是本人的理解,如有錯,請包涵指出。

⑷ 操作系統銀行家演算法題

解:(1)利用銀行家演算法對此時刻的資源分配情況進行分析,可得此時刻的安全性分析情況:
Work Need Allocation Work+Allocation Finish
P0 1 6 2 2 0 0 1 2 0 0 3 2 1 6 5 4 true
P3 1 6 5 4 0 6 5 2 0 3 3 2 1 9 8 6 true
P4 1 9 8 6 0 6 5 6 0 0 1 4 1 9 9 10 true
P1 1 9 9 10 1 7 5 0 1 0 0 0 2 9 9 10 true
P2 2 9 9 10 2 3 5 6 1 3 5 4 3 12 14 14 true
從上述分析中可以看出,此時存在一個安全序列{P0,P3,P4,P1,P2},故該狀態是安全的。
(2)P2提出請求Request2(1,2,2,2),按銀行家演算法進行檢查:
·Request2(1,2,2,2) ≤Need(2,3,5,6)
·Request2(1,2,2,2) ≤Available(1,6,2,2)
·試分配並修改相應數據結構,資源分配情況如下:
Allocation Need Available
P0 0 0 3 2 0 0 1 2 0 4 0 0
P1 1 0 0 0 1 7 5 0
P2 2 5 7 6 1 1 3 4
P3 0 3 3 2 0 6 5 2
P4 0 0 1 4 0 6 5 6

·再利用安全性演算法檢查系統是否安全,可用系統資源Available(0,4,0,0)已不能滿足任何進程的需要,故系統進入不安全狀態,此時系統不能將資源分配給P2。

閱讀全文

與銀行家演算法問題詳解相關的資料

熱點內容
新手學電腦編程語言 瀏覽:891
雲空間在哪個文件夾 瀏覽:926
編程游戲小貓抓小魚 瀏覽:790
安卓dosbox怎麼打開 瀏覽:774
伺服器無影響是怎麼回事 瀏覽:952
比德電子采購平台加密 瀏覽:202
加密貨幣400億 瀏覽:524
植發2次加密 瀏覽:44
vc6查看編譯的錯誤 瀏覽:595
心理大全pdf 瀏覽:1002
區域鏈加密幣怎麼樣 瀏覽:343
查找命令符 瀏覽:95
壓縮工具zar 瀏覽:735
白盤怎麼解壓 瀏覽:475
辰語程序員學習筆記 瀏覽:47
程序員被公司勸退 瀏覽:523
java三子棋 瀏覽:693
加密空間怎麼強制進入 瀏覽:345
ug分割曲線命令 瀏覽:209
學碼思程序員 瀏覽:610