




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、*大學(xué)計(jì)算機(jī)學(xué)院實(shí) 驗(yàn) 報(bào) 告 冊(cè)院系名稱: 計(jì)算機(jī)科學(xué)學(xué)院 課程名稱: 操作系統(tǒng) 實(shí)驗(yàn)學(xué)期 2009 年至 2010 年 第 二 學(xué)期專業(yè)班級(jí): 計(jì)算機(jī)科學(xué)與技術(shù) 2008級(jí)1班 姓名: HORACE 學(xué)號(hào): 20081* 指導(dǎo)教師: *老師 實(shí)驗(yàn)最終成績: 實(shí)驗(yàn)報(bào)告須知1學(xué)生填寫實(shí)驗(yàn)報(bào)告應(yīng)按規(guī)范填寫,填寫格式見由任課老師給出的實(shí)驗(yàn)報(bào)告樣本;2學(xué)生應(yīng)填寫的內(nèi)容包括:封面相關(guān)欄目、第一頁中本學(xué)期(年)開設(shè)實(shí)驗(yàn)課程情況一覽表中的實(shí)驗(yàn)名稱、學(xué)時(shí)數(shù);每次報(bào)告中的實(shí)驗(yàn)性質(zhì)、同組人姓名、實(shí)驗(yàn)日期、以及實(shí)驗(yàn)報(bào)告中的一至五項(xiàng);3教師填寫內(nèi)容為:實(shí)驗(yàn)評(píng)價(jià)、每次報(bào)告成績、第一頁中本學(xué)期(年)開設(shè)實(shí)驗(yàn)課程情況一覽
2、表中成績、及封面的實(shí)驗(yàn)最終成績;4學(xué)生實(shí)驗(yàn)結(jié)束后,教師應(yīng)對(duì)學(xué)生實(shí)驗(yàn)結(jié)果進(jìn)行核實(shí),學(xué)生方可離開實(shí)驗(yàn)室。5、實(shí)驗(yàn)成績等級(jí)分為(90100分)優(yōu),(8089分)良,(70-79分)中,(6069分)及格,(59分)不及格。6本實(shí)驗(yàn)冊(cè)應(yīng)妥善保管,本課程實(shí)驗(yàn)結(jié)束后應(yīng)交回實(shí)驗(yàn)室。實(shí)驗(yàn)報(bào)告(7)實(shí)驗(yàn)名稱死鎖避免算法實(shí)現(xiàn)同組人姓名實(shí)驗(yàn)性質(zhì) 基本操作 設(shè)計(jì)性 綜合性 驗(yàn)證性實(shí)驗(yàn)日期2010-05-10實(shí)驗(yàn)成績教師評(píng)價(jià):實(shí)驗(yàn)預(yù)習(xí) 實(shí)驗(yàn)操作 實(shí)驗(yàn)結(jié)果 實(shí)驗(yàn)報(bào)告 其它 教師簽名:一、實(shí)驗(yàn)?zāi)康募耙螅?)了解操作系統(tǒng)如何處理死鎖(2)通過編寫程序掌握如何利用銀行家算法來實(shí)現(xiàn)死鎖的避免。二、實(shí)驗(yàn)內(nèi)容(1)用熟悉的計(jì)算機(jī)編
3、程語言編寫一實(shí)現(xiàn)計(jì)算機(jī)資源動(dòng)態(tài)分配的程序。(2)要求接收用戶輸入數(shù)據(jù),利用銀行家算法來判斷該次請(qǐng)求能否分配。(3)掌握操作系統(tǒng)是如何在資源的動(dòng)態(tài)分配過程中防止系統(tǒng)死鎖的發(fā)生。三、主要設(shè)備及軟件PC、WindowsXP操作系統(tǒng)、MyEclipse Java編譯環(huán)境四、實(shí)驗(yàn)流程、操作步驟或核心代碼、算法片段本人以Java語言模擬實(shí)現(xiàn)銀行家避免死鎖算法,其中分別把銀行家算法和安全性檢測(cè)算法封裝在不同的類中,即class Banker和class SafeTest,最終在主類中創(chuàng)建Banker類對(duì)象進(jìn)行測(cè)試。具體實(shí)現(xiàn)代碼如下:1、銀行家類Banker的實(shí)現(xiàn):package com.kaiping.Av
4、oidDeadlock;import java.util.Scanner;public class Banker int ProcessNum;/進(jìn)程數(shù)int SourceNum;/資源類型數(shù)int Available;/可利用資源向量int Max;/最大需求矩陣int Allocation;/分配矩陣int Need;/需求矩陣public Banker(int pN, int sN)ProcessNum = pN;SourceNum = sN;Available = new intSourceNum;Max = new intProcessNumSourceNum;Allocation
5、= new intProcessNumSourceNum;Need = new intProcessNumSourceNum;public void Initilize()/初始化方法Scanner s = new Scanner(System.in); System.out.println("=初始化="); for(int i = 0; i < Max.length; i+) System.out.print("請(qǐng)依次輸入第" + i + "進(jìn)程的各資源數(shù):"); for(int j = 0; j < Maxi.len
6、gth; j+) Maxij = s.nextInt(); for(int i=0;i<Allocation.length;i+) System.out.print("請(qǐng)依次輸入第" + i + "進(jìn)程中已分配資源的數(shù)量:"); for(int j=0;j<Allocationi.length;j+) Allocationij = s.nextInt(); Needij = Maxij - Allocationij; for(int i=0;i<Available.length;i+) System.out.print("請(qǐng)輸
7、入系統(tǒng)中第" + i + "種資源的剩余量:"); Availablei = s.nextInt(); System.out.println("=初始化結(jié)果="); System.out.println(" MAX ALLOCATION NEED AVAILABLE"); for(int i = 0; i < ProcessNum; i+) System.out.print("P" + i + ": "); for(int j = 0; j < SourceNum; j+)
8、 if(Maxij>9)/如果是兩位數(shù),控制格式,在數(shù)字前少輸出一個(gè)" "。 System.out.print(Maxij + " "); else System.out.print(" " + Maxij + " "); System.out.print(" "); for(int j = 0; j < SourceNum; j+) if(Allocationij>9) System.out.print(Allocationij + " "); else
9、System.out.print(" " + Allocationij + " "); System.out.print(" "); for(int j = 0; j < SourceNum; j+) if(Needij>9) System.out.print(Needij + " "); else System.out.print(" " + Needij + " "); if(i=0) System.out.print(" "); for(
10、int j=0;j<SourceNum;j+) if(Availablej>9) System.out.print(Availablej + " "); else System.out.print(" " + Availablej + " "); System.out.println(); System.out.println("=完成初始化="); System.out.println();public void BakerAlgorithm()/銀行家算法具體實(shí)現(xiàn)int Request= new i
11、ntSourceNum;int number;/進(jìn)程號(hào)Scanner s=new Scanner(System.in);int i;/循環(huán)計(jì)數(shù)器System.out.print("請(qǐng)輸入要申請(qǐng)資源的進(jìn)程號(hào):");number = s.nextInt();System.out.print("請(qǐng)輸入請(qǐng)求向量:");for(i=0; i<SourceNum; i+)Requesti = s.nextInt();for(i=0; i<SourceNum; i+)if(Requesti > Neednumberi)/所需資源數(shù)大于需求量Syste
12、m.out.println("進(jìn)程所要求分配的資源數(shù)已超過其宣布的最大值,系統(tǒng)不予分配!");return;if(Requesti > Availablei)/所需資源大于可利用資源System.out.println("系統(tǒng)中無足夠的資源滿足進(jìn)程的申請(qǐng),系統(tǒng)不予分配!");return;for(i=0; i<SourceNum; i+)/假設(shè)系統(tǒng)將申請(qǐng)資源數(shù)分配給該進(jìn)程,對(duì)數(shù)據(jù)進(jìn)行相關(guān)修改Availablei -= Requesti;Neednumberi -= Requesti;Allocationnumberi += Requesti;
13、SafeTest safetest = new SafeTest(this);if(safetest.SafeTestAlgorithm()/安全性檢查結(jié)果為安全System.out.println("系統(tǒng)可以為該進(jìn)程分配資源!");return;elseSystem.out.println("系統(tǒng)不為該進(jìn)程分配資源!");for(i=0; i<SourceNum; i+)/系統(tǒng)不能為該進(jìn)程分配資源,前面的假設(shè)作廢,對(duì)數(shù)據(jù)進(jìn)行相關(guān)修改Availablei += Requesti;Neednumberi += Requesti;Allocationn
14、umberi -= Requesti;return;2、安全性檢測(cè)算法類SafeTest的實(shí)現(xiàn):package com.kaiping.AvoidDeadlock;class SafeTest int ProcessNum;/進(jìn)程數(shù)int SourceNum;/資源類型數(shù)int SafeSequence;/安全序列向量int Work;/空閑資源矩陣boolean Finish;/進(jìn)程資源分配完成標(biāo)志Banker banker;/銀行家實(shí)例public SafeTest(Banker bK)banker = bK;ProcessNum = bK.ProcessNum;SourceNum = b
15、K.SourceNum;SafeSequence = new intProcessNum;Work = new intSourceNum;Finish = new booleanProcessNum;for(int i = 0; i < ProcessNum; i+)/初始化向量SafeSequence、FinishSafeSequencei = 0;Finishi = false;for(int i = 0;i < SourceNum; i+)/初始化向量WorkWorki = bK.Availablei;public boolean SafeTestAlgorithm()/安全
16、性測(cè)試算法具體實(shí)現(xiàn)int k = 0;int i,j;/循環(huán)計(jì)數(shù)器for(i=0; i<ProcessNum; i+)if(Finishi=false)for(j=0; j<SourceNum; j+)/*判斷當(dāng)前進(jìn)程需求矩陣能否得到滿足*/if(banker.Needij > Workj)break;/不滿足則跳出if(j = SourceNum)/第i個(gè)進(jìn)程滿足SafeSequencek+=i;/將進(jìn)程號(hào)存入安全序列for(int q=0; q<SourceNum; q+)/修改空閑資源矩陣Workq += banker.Allocationiq;Finishi =
17、 true;/標(biāo)志該進(jìn)程可完成i = -1;/下次檢查重頭開始for(i=0; i<ProcessNum; i+)/檢查標(biāo)志數(shù)組,若尚有false則未找到安全序列if(!Finishi)System.out.println("找不到安全序列,系統(tǒng)處于不安全狀態(tài)!");return false;System.out.println("找到安全序列:");for(i=0; i<ProcessNum; i+)/顯示安全序列System.out.print("P"+SafeSequencei+" ");Syst
18、em.out.println();System.out.println("系統(tǒng)處于安全狀態(tài)!");return true;3、主類AvoidDeadlockImplement的實(shí)現(xiàn):package com.kaiping.AvoidDeadlock;import java.util.Scanner;public class AvoidDeadlockImplement public static void main(String args) int ProNum,SouNum;/進(jìn)程數(shù)、資源類型數(shù)Banker banker;/銀行家算法對(duì)象SafeTest safetest;/安全性測(cè)試算法對(duì)象Scanner scanner=new Scanner(System.in);System.out.print("請(qǐng)依次輸入系統(tǒng)中的【進(jìn)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年金融租賃業(yè)務(wù)創(chuàng)新模式與風(fēng)險(xiǎn)管理策略研究報(bào)告
- 2025年細(xì)胞治療產(chǎn)品臨床試驗(yàn)與審批流程質(zhì)量控制研究報(bào)告
- 車工工藝與技能訓(xùn)練(第二版)課件:車內(nèi)圓錐及圓錐配合件
- 人機(jī)工程學(xué)應(yīng)用課件
- 儀用電源項(xiàng)目安全評(píng)估報(bào)告
- 猩紅熱的治療與護(hù)理
- 糖尿病足截肢后的護(hù)理
- 別墅弱電設(shè)計(jì)方案匯報(bào)
- 古詩《元日》大班教學(xué)課件設(shè)計(jì)
- 衛(wèi)生保健5月工作總結(jié)
- 建筑保溫工程包工包料合同協(xié)議書范本
- MOOC 美術(shù)鑒賞-河南理工大學(xué) 中國大學(xué)慕課答案
- 頁巖氣及其成藏特征
- 植物生理學(xué)課件(王小菁-第8版)-第五章-植物同化物的運(yùn)輸
- 建設(shè)工程監(jiān)理質(zhì)量管理體系樣本
- 全國海洋知識(shí)競賽考試題庫及答案解析(800題版)
- 山東省東營市2023年中考化學(xué)試題(附真題答案)
- 應(yīng)用電化學(xué)習(xí)題及答案
- 保潔外包可行性方案
- 防災(zāi)避險(xiǎn)功能綠地規(guī)劃
- 大型車禍急救護(hù)理
評(píng)論
0/150
提交評(píng)論