銀行家算法的實(shí)現(xiàn)操作系統(tǒng)實(shí)驗(yàn)報(bào)告利用銀行家算法避免死鎖_第1頁
銀行家算法的實(shí)現(xiàn)操作系統(tǒng)實(shí)驗(yàn)報(bào)告利用銀行家算法避免死鎖_第2頁
銀行家算法的實(shí)現(xiàn)操作系統(tǒng)實(shí)驗(yàn)報(bào)告利用銀行家算法避免死鎖_第3頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第 PAGE14 頁 共 NUMPAGES14 頁銀行家算法的實(shí)現(xiàn)-操作系統(tǒng)實(shí)驗(yàn)報(bào)告利用銀行家算法避免死鎖計(jì)算機(jī)操作系統(tǒng)實(shí)驗(yàn)報(bào)告題 目利用銀行家算法避免死鎖一、實(shí)驗(yàn)?zāi)康模?、加深了解有關(guān)資申請(qǐng)、避免死鎖等概念,并體會(huì)和了解死鎖和避免死 鎖的具體實(shí)施方法。2、要求編寫和調(diào)試一個(gè)系統(tǒng)動(dòng)態(tài)分配資的簡(jiǎn)單模擬程序,觀察死鎖產(chǎn)生 的條件,并采用銀行家算法,有效的防止和避免死鎖的發(fā)生。二、實(shí)驗(yàn)內(nèi)容:用銀行家算法實(shí)現(xiàn)資分配:設(shè)計(jì)五個(gè)進(jìn)程p0,p1,p2,p3,p4共享三類資A,B,C的系統(tǒng),例如, A,B,C的資數(shù)量分別為10,5,7。進(jìn)程可動(dòng)態(tài)地申請(qǐng)資和釋放資, 系統(tǒng)按進(jìn)程的申請(qǐng)動(dòng)態(tài)地分配資, 要求程序具有

2、顯示和打印各進(jìn)程的某一 個(gè)時(shí)刻的資分配表和安全序列;顯示和打印各進(jìn)程依次要求申請(qǐng)的資號(hào)以及為某進(jìn)程分配資后的有關(guān)資數(shù)據(jù)。三、問題分析p p 與設(shè)計(jì):1、算法思路:先對(duì)用戶提出的請(qǐng)求進(jìn)行合法性檢查,即檢查請(qǐng)求是否大于需要的,是 否大于可利用的。若請(qǐng)求合法,則進(jìn)行預(yù)分配,對(duì)分配后的狀態(tài)調(diào)用安全性 算法進(jìn)行檢查。若安全,則分配;若不安全,則拒絕申請(qǐng),恢復(fù)到原來的狀 態(tài),拒絕申請(qǐng)。2、銀行家算法步驟:如果Request v or二Need,則轉(zhuǎn)向步驟 ;否則,認(rèn)為出錯(cuò),因 為它所需要的資數(shù)已超過它所宣布的最大值。如果Requestv or二Available,則轉(zhuǎn)向步驟(3);否則,表示系統(tǒng)中 尚無足

3、夠的資,進(jìn)程必須等待。系統(tǒng)試探把要求的資分配給進(jìn)程 Pi, 并修改下面數(shù)據(jù)結(jié)構(gòu)中的數(shù) 值:Available=Available-Requesti;Allocation=Allocation+Request;Need=Need-Request;系統(tǒng)執(zhí)行安全性算法,檢查此次資分配后,系統(tǒng)是否處于安全狀 態(tài)。3、安全性算法步驟:( 1 )設(shè)置兩個(gè)向量工作向量Work。它表示系統(tǒng)可提供進(jìn)程繼續(xù)運(yùn)行所需要的各類資數(shù) 目,執(zhí)行安全算法開始時(shí), Work=Allocation;布爾向量 Finish 。它表示系統(tǒng)是否有足夠的資分配給進(jìn)程, 使之運(yùn) 行完成,開始時(shí)先做 Finishi=false ,當(dāng)有足夠

4、資分配給進(jìn)程時(shí),令 Finishi=true 。(2)從進(jìn)程集合中找到一個(gè)能滿足下述條件的進(jìn)程:Fi nishi=falseNeedvor二Work如找到,執(zhí)行步驟( 3);否則,執(zhí)行步驟( 4)。( 3)當(dāng)進(jìn)程 P 獲得資后,可順利執(zhí)行,直至完成,并釋放出分配給它的資,故應(yīng)執(zhí)行:Work=Work+Allocation;Finishi=true;轉(zhuǎn)向步驟( 2)。否則,系( 4)如果所有進(jìn)程的 Finishi=true, 則表示系統(tǒng)處于安全狀態(tài); 統(tǒng)處于不安全狀態(tài)。否則,系4、流程圖:系統(tǒng)主要過程流程圖銀行家算法流程圖安全性算法流程圖5、主要數(shù)據(jù)結(jié)構(gòu)假設(shè)有M個(gè)進(jìn)程N(yùn)類資,則有如下數(shù)據(jù)結(jié)構(gòu):i

5、nt ma_M_N M 個(gè)進(jìn)程對(duì)N類資的最大需求量int availableN 系統(tǒng)可用資數(shù)int allocatedM_N M個(gè)進(jìn)程已經(jīng)得到N類資的資量int needM_N M 個(gè)進(jìn)程還需要N類資的資量int worked 系統(tǒng)提供給進(jìn)程繼續(xù)運(yùn)行所需的各類資數(shù)目四、代碼import ._;import ._;import ._;public class OsBanker e_tends JFrame etBounds(0, 0 + pi _20, 60,20);labelProcessLabel2pi.setBounds(0, 0 + pi _20, 60, 20);(75, 120, 6

6、0, 120);(75, 270, 60, 120);for (int pi = 0; pi 6; pi+) (labelProcessLabel1pi, null);(labelProcessLabel2pi, null);(pPanel1);(pPanel2);(pPanel4);for (int si = 0; si 5; si+)for (int pi = 0; pi 6; pi+) te_tNeedpisi = new JTe_tField;te_tNeedpisi.setBounds(150 + si _50, 120 + pi _20, 50, 20); te_tNeedpisi

7、.setEditable(false);te_tAllocationpisi = new JTe_tField; te_tAllocationpisi.setBounds(150 + si _50, 270 +pi _20,50, 20);te_tAllocationpisi.setEditable(false);for (int si = 0; si 5; si+) te_tAvailablesi = new JTe_tField;te_tAvailablesi.setEditable(false);te_tAvailablesi.setBounds(150 + si _50, 70, 50

8、, 20); te_tRequestsi = new JTe_tField;te_tRequestsi.setEditable(false);te_tRequestsi.setBounds(150 + si _50, 430, 50, 20); (te_tAvailablesi, null);(te_tRequestsi, null);for (int pi = 0; pi 6; pi+)for (int si = 0; si 5; si+) (te_tNeedpisi, null);(te_tAllocationpisi, null);(80, 430, 50, 20);(te_tProce

9、ssName, null);(550, 500);(false);(“ 銀行家算法 (S_J)”);(null);(E_IT_ON_CLOSE); dd(scrollPane);(450, 400);(false);(E_IT_ON_CLOSE);(false);(false);(false);(false);(new ActionListener public void actionPerformed(ActionEvent e) etEditable(true);te_tAllocationij.setEditable(true); te_tAvailablej.setEditable(t

10、rue););(new ActionListener public void actionPerformed(ActionEvent e) Init;(true););(new ActionListener public void actionPerformed(ActionEvent e) count = 0;SafeSequence = new intprocessNum; worked = new intresourceNum;Finish = new booleanprocessNum; copyVector(worked, available); Safety(0);(“ 安全序列數(shù)

11、量: ” + count);if (flag) (“ 當(dāng)前系統(tǒng)狀態(tài):安全 ”);(true);(true);(true);for (int i = 0; i resourceNum; i+) te_tRequesti.setEditable(true); else (“ 當(dāng)前系統(tǒng)狀態(tài):不安全 ”);(false););(new ActionListener public void actionPerformed(ActionEvent e) count = 0;for (int i = 0; i processNum; i+) Finishi = false;(“”);flag = false

12、;RequestResource;);(new ActionListener public void actionPerformed(ActionEvent e) /_(“”); (“”);_/(false);(“”);for (int i = 0; i processNum; i+) for (int j = 0; j resourceNum; j+) te_tNeedij.setTe_t(“”); te_tAllocationij.setTe_t(“”); te_tAvailablej.setTe_t(“”); te_tRequestj.setTe_t(“”); etEditable(fa

13、lse); etEditable(false); etEditable(false); te_tRequestj.setEditable(false); (“”);Finishi = false;flag = false;(false); etTe_t);ma_ = new intprocessNumresourceNum; allocated = new intprocessNumresourceNum; need = new intprocessNumresourceNum;for (int i = 0; i processNum; i+) for (int j = 0; j resour

14、ceNum; j+) ma_ij = (te_tNeedij.getTe_t); allocatedij = (te_tAllocationij .getTe_t);for (int i = 0; i resourceNum; i+)for (int j = 0; j processNum; j+)needji = ma_ji - allocatedji;for (int i = 0; i resourceNum; i+) for (int j = 0; j processNum; j+) availablei -= allocatedji;if (availablei 0) (“ 您輸入的數(shù)

15、據(jù)有誤 ,請(qǐng)重新輸入 ”);void Safety(int n) etTe_t);if (!Smaller(request, needprocessname) (“ 資請(qǐng)求不符該進(jìn)程的需求量 .”); else if (!Smaller(request, available) (“ (” 可用資不足以滿足請(qǐng)求 , 進(jìn)程需要等待 .“);(” (“ 可用資不足以滿足請(qǐng)求 , 進(jìn)程需要等待 .”); else Sub(available, request);Add(allocatedprocessname, request);Sub(needprocessname, request);copyVector(worked, available);Safety(0);if (flag) (“ 可立即分配給該進(jìn)程 !”); else (“ 分配后導(dǎo)致系統(tǒng)處于不安全狀態(tài) !, 不可立即分配 ”);Add(available, request);Sub(allocatedprocessname, request);Add(needprocessname, request);/ 五、實(shí)驗(yàn)結(jié)果:初始界面: 初始化:檢測(cè)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論