




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、*大學(xué)計算機學(xué)院實 驗 報 告 冊院系名稱: 計算機科學(xué)學(xué)院 課程名稱: 操作系統(tǒng) 實驗學(xué)期 2009 年至 2010 年 第 二 學(xué)期專業(yè)班級: 計算機科學(xué)與技術(shù) 2008級1班 姓名: HORACE 學(xué)號: 20081* 指導(dǎo)教師: *老師 實驗最終成績: 實驗報告須知1學(xué)生填寫實驗報告應(yīng)按規(guī)范填寫,填寫格式見由任課老師給出的實驗報告樣本;2學(xué)生應(yīng)填寫的內(nèi)容包括:封面相關(guān)欄目、第一頁中本學(xué)期(年)開設(shè)實驗課程情況一覽表中的實驗名稱、學(xué)時數(shù);每次報告中的實驗性質(zhì)、同組人姓名、實驗日期、以及實驗報告中的一至五項;3教師填寫內(nèi)容為:實驗評價、每次報告成績、第一頁中本學(xué)期(年)開設(shè)實驗課程情況一覽
2、表中成績、及封面的實驗最終成績;4學(xué)生實驗結(jié)束后,教師應(yīng)對學(xué)生實驗結(jié)果進行核實,學(xué)生方可離開實驗室。5、實驗成績等級分為(90100分)優(yōu),(8089分)良,(70-79分)中,(6069分)及格,(59分)不及格。6本實驗冊應(yīng)妥善保管,本課程實驗結(jié)束后應(yīng)交回實驗室。實驗報告(7)實驗名稱死鎖避免算法實現(xiàn)同組人姓名實驗性質(zhì) 基本操作 設(shè)計性 綜合性 驗證性實驗日期2010-05-10實驗成績教師評價:實驗預(yù)習(xí) 實驗操作 實驗結(jié)果 實驗報告 其它 教師簽名:一、實驗?zāi)康募耙螅?)了解操作系統(tǒng)如何處理死鎖(2)通過編寫程序掌握如何利用銀行家算法來實現(xiàn)死鎖的避免。二、實驗內(nèi)容(1)用熟悉的計算機編
3、程語言編寫一實現(xiàn)計算機資源動態(tài)分配的程序。(2)要求接收用戶輸入數(shù)據(jù),利用銀行家算法來判斷該次請求能否分配。(3)掌握操作系統(tǒng)是如何在資源的動態(tài)分配過程中防止系統(tǒng)死鎖的發(fā)生。三、主要設(shè)備及軟件PC、WindowsXP操作系統(tǒng)、MyEclipse Java編譯環(huán)境四、實驗流程、操作步驟或核心代碼、算法片段本人以Java語言模擬實現(xiàn)銀行家避免死鎖算法,其中分別把銀行家算法和安全性檢測算法封裝在不同的類中,即class Banker和class SafeTest,最終在主類中創(chuàng)建Banker類對象進行測試。具體實現(xiàn)代碼如下:1、銀行家類Banker的實現(xiàn):package com.kaiping.Av
4、oidDeadlock;import java.util.Scanner;public class Banker int ProcessNum;/進程數(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("請依次輸入第" + i + "進程的各資源數(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("請依次輸入第" + i + "進程中已分配資源的數(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("請輸
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ù)字前少輸出一個" "。 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()/銀行家算法具體實現(xiàn)int Request= new i
11、ntSourceNum;int number;/進程號Scanner s=new Scanner(System.in);int i;/循環(huán)計數(shù)器System.out.print("請輸入要申請資源的進程號:");number = s.nextInt();System.out.print("請輸入請求向量:");for(i=0; i<SourceNum; i+)Requesti = s.nextInt();for(i=0; i<SourceNum; i+)if(Requesti > Neednumberi)/所需資源數(shù)大于需求量Syste
12、m.out.println("進程所要求分配的資源數(shù)已超過其宣布的最大值,系統(tǒng)不予分配!");return;if(Requesti > Availablei)/所需資源大于可利用資源System.out.println("系統(tǒng)中無足夠的資源滿足進程的申請,系統(tǒng)不予分配!");return;for(i=0; i<SourceNum; i+)/假設(shè)系統(tǒng)將申請資源數(shù)分配給該進程,對數(shù)據(jù)進行相關(guān)修改Availablei -= Requesti;Neednumberi -= Requesti;Allocationnumberi += Requesti;
13、SafeTest safetest = new SafeTest(this);if(safetest.SafeTestAlgorithm()/安全性檢查結(jié)果為安全System.out.println("系統(tǒng)可以為該進程分配資源!");return;elseSystem.out.println("系統(tǒng)不為該進程分配資源!");for(i=0; i<SourceNum; i+)/系統(tǒng)不能為該進程分配資源,前面的假設(shè)作廢,對數(shù)據(jù)進行相關(guān)修改Availablei += Requesti;Neednumberi += Requesti;Allocationn
14、umberi -= Requesti;return;2、安全性檢測算法類SafeTest的實現(xiàn):package com.kaiping.AvoidDeadlock;class SafeTest int ProcessNum;/進程數(shù)int SourceNum;/資源類型數(shù)int SafeSequence;/安全序列向量int Work;/空閑資源矩陣boolean Finish;/進程資源分配完成標(biāo)志Banker banker;/銀行家實例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、性測試算法具體實現(xiàn)int k = 0;int i,j;/循環(huán)計數(shù)器for(i=0; i<ProcessNum; i+)if(Finishi=false)for(j=0; j<SourceNum; j+)/*判斷當(dāng)前進程需求矩陣能否得到滿足*/if(banker.Needij > Workj)break;/不滿足則跳出if(j = SourceNum)/第i個進程滿足SafeSequencek+=i;/將進程號存入安全序列for(int q=0; q<SourceNum; q+)/修改空閑資源矩陣Workq += banker.Allocationiq;Finishi =
17、 true;/標(biāo)志該進程可完成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的實現(xiàn):package com.kaiping.AvoidDeadlock;import java.util.Scanner;public class AvoidDeadlockImplement public static void main(String args) int ProNum,SouNum;/進程數(shù)、資源類型數(shù)Banker banker;/銀行家算法對象SafeTest safetest;/安全性測試算法對象Scanner scanner=new Scanner(System.in);System.out.print("請依次輸入系統(tǒng)中的【進
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廠房拆遷補償與環(huán)保設(shè)施配套合同
- 老師介紹課件
- 公共廁所日常維護及深度清潔合作協(xié)議
- 新能源汽車制造廠區(qū)轉(zhuǎn)讓與市場推廣合同
- 出租車副班司機合同解除與終止合同
- 專業(yè)倉儲物流企業(yè)成品油代購代銷合同范本
- 采石場承包與礦產(chǎn)資源補償費合同
- 老人睡眠護理課件
- 美術(shù)課件中國畫
- 消防安全生產(chǎn)制度
- 重說二十年前的作品亮出你的舌苔或空空蕩蕩
- 如何給領(lǐng)導(dǎo)拍照
- 四川省中小河流綜合治理工程初步設(shè)計報告編制大綱初稿
- 科學(xué)版二年級《隊列隊形原地由一路縱隊變成二路縱隊》教案及教學(xué)反思
- 2023-2024年醫(yī)學(xué)高級職稱-婦產(chǎn)科護理(醫(yī)學(xué)高級)考試題庫(含答案)
- 醫(yī)療器械公司咨詢培訓(xùn)記錄表(全套)-
- 橫紋肌溶解癥課件
- 供應(yīng)鏈整體運作流程
- MT/T 548-1996單體液壓支柱使用規(guī)范
- GB/T 9765-2009輪胎氣門嘴螺紋
- GB/T 23806-2009精細陶瓷斷裂韌性試驗方法單邊預(yù)裂紋梁(SEPB)法
評論
0/150
提交評論