怎么寫銀行家算法的代碼
1、銀行家算法可以描述為 四舍六入五考慮,五后非零就進(jìn)一,五后為零看基偶,五前為偶應(yīng)舍去,五前為基要進(jìn)一。Java的圖形界面從開始我就沒學(xué)過,學(xué)那些沒用,所以我只能用Java代碼實(shí)現(xiàn)這個(gè)需求。
2、(1)若進(jìn)程P1請求資源,發(fā)出請求向量Request1(1,0,2),編寫程序用銀行家算法判斷系統(tǒng)能否將資源分配給它;(2)若進(jìn)程P2提出請求Request(0,1,0),用銀行家算法程序驗(yàn)證系統(tǒng)能否將資源分配給它。
3、)最大需求矩陣Max這是一個(gè)n×m的矩陣,它定義了系統(tǒng)中n個(gè)進(jìn)程中的每一個(gè)進(jìn)程對m類資源的最大需求。如果Max[i,j]=K,則表示進(jìn)程i需要Rj類資源的最大數(shù)目為K。
銀行家算法
銀行家算法是一種最有代表性的避免死鎖的算法。在避免死鎖方法中允許進(jìn)程動態(tài)地申請資源,但系統(tǒng)在進(jìn)行資源分配之前,應(yīng)先計(jì)算此次分配資源的安全性,若分配不會導(dǎo)致系統(tǒng)進(jìn)入不安全狀態(tài),則分配,否則等待。
銀行家算法(Bankers Algorithm)是一個(gè)避免死鎖(Deadlock)的著名算法,是由艾茲格·迪杰斯特拉在1965年為T.H.E系統(tǒng)設(shè)計(jì)的一種避免死鎖產(chǎn)生的算法。它以銀行借貸系統(tǒng)的分配策略為基礎(chǔ),判斷并保證系統(tǒng)的安全運(yùn)行。
銀行家算法問題是研究一個(gè)銀行家如何將其總數(shù)一定的現(xiàn)金安全地借給若干個(gè)顧客,使這些顧客既能滿足對資金的要求,又能完成其交易,也使銀行家可以收回自己的全部現(xiàn)金不致于破產(chǎn)。
用C語言或C++編寫操作系統(tǒng)作業(yè):銀行家算法
1、我們可以把操作系統(tǒng)看作是銀行家,操作系統(tǒng)管理的資源相當(dāng)于銀行家管理的資金,進(jìn)程向操作系統(tǒng)請求分配資源相當(dāng)于用戶向銀行家貸款。
2、利用銀行家算法避免死鎖 . 銀行家算法 設(shè)Requesti是進(jìn)程Pi的請求向量,如果Requesti〔j〕=K,表示進(jìn)程Pi需要K個(gè)Rj類型的資源。
3、銀行家算法是一種最有代表性的避免死鎖的算法。在避免死鎖方法中允許進(jìn)程動態(tài)地申請資源,但系 銀行家算法統(tǒng)在進(jìn)行資源分配之前,應(yīng)先計(jì)算此次分配資源的安全性,若分配不會導(dǎo)致系統(tǒng)進(jìn)入不安全狀態(tài),則分配,否則等待。
4、銀行家算法的基本思想是分配資源之前,判斷系統(tǒng)是否是安全的;若是,才分配。它是最具有代表性的避免死鎖的算法。設(shè)進(jìn)程cusneed提出請求REQUEST [i],則銀行家算法按如下規(guī)則進(jìn)行判斷。
5、擴(kuò)展的銀行家算法 就是銀行家算法的擴(kuò)展。描述:n:系統(tǒng)中的進(jìn)程個(gè)數(shù)。m:系統(tǒng)中的資源類型數(shù)。Available(1:m):現(xiàn)有資源向量。Available(j)=k 表示有k個(gè)未分配的j類資源。
操作系統(tǒng)-銀行家算法問題
銀行家算法是死鎖避免的重要算法。銀行家算法:資源==錢;收回資源==收回貸款;收不回資源==不會放貸;例題:假設(shè)系統(tǒng)中有三類互斥資源R1,R2,R3。
銀行家算法: 設(shè)Requesti是進(jìn)程Pi的請求向量,如果Requesti[j]=K,表示進(jìn)程Pi需要K個(gè)Rj類型的資源。
②采用銀行家算法進(jìn)行計(jì)算分析可知:系統(tǒng)可以滿足P2進(jìn)程對資源的請求,將資源分配給P2之后,至少可以找到一個(gè)安全的執(zhí)行序列,如(P2, P1, P3, P4)使各進(jìn)程正常運(yùn)行終結(jié)。
比如1單位是1千美元),銀行家知道不可能所有客戶同時(shí)都需要最大貸款額,所以他只保留10個(gè)單位而不是22個(gè)單位的資金來為客戶服務(wù)。這里將客戶比作進(jìn)程,貸款單位比作資源,銀行家比作操作系統(tǒng)。
為實(shí)現(xiàn)銀行家算法,系統(tǒng)必須設(shè)置若干數(shù)據(jù)結(jié)構(gòu)。要解釋銀行家算法,必須先解釋操作系統(tǒng)安全狀態(tài)和不安全狀態(tài)。
第一問,系統(tǒng)目前處于安全狀態(tài),存在安全序列BADEC;第二問,可以分配,系統(tǒng)可以先滿足B進(jìn)程,之后滿足C進(jìn)程后資源數(shù)能達(dá)到3856,足夠了。
銀行家算法實(shí)驗(yàn)
P1進(jìn)程提出的請求,可以分配。P2進(jìn)程不能分配,因?yàn)檎埱蟮腂類資源超過了它的最大值。
銀行家算法:設(shè)進(jìn)程i提出請求Request[j],則銀行家算法按如下規(guī)則進(jìn)行判斷。(1) 如果Request[j]≤Need[i,j],則轉(zhuǎn)向(2),否則認(rèn)為出錯(cuò)。
銀行家算法的基本思想是分配資源之前,判斷系統(tǒng)是否是安全的;若是安全的,才分配。 我們可以把操作系統(tǒng)看作是銀行家,操作系統(tǒng)管理的資源相當(dāng)于銀行家管理的資金,進(jìn)程向操作系統(tǒng)請求分配資源相當(dāng)于用戶向銀行家貸款。
利用銀行家算法避免死鎖 . 銀行家算法 設(shè)Requesti是進(jìn)程Pi的請求向量,如果Requesti〔j〕=K,表示進(jìn)程Pi需要K個(gè)Rj類型的資源。
A.執(zhí)行并行操作 B.撤銷進(jìn)程 C.拒絕分配新資源 D.修改信號量 產(chǎn)生死鎖的四個(gè)必要條件是:互斥、_B___、循環(huán)等待、不剝奪。
操作系統(tǒng)一般都是考教材上面的題目。比如模擬銀行家算法,或者模一些調(diào)度程序,教材后面好像有幾個(gè)實(shí)驗(yàn)吧,必是那幾個(gè)之一。放心吧,這里不存在作弊,不是考你記憶的。