




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第7頁(yè)共7頁(yè)操作系統(tǒng)課程設(shè)計(jì)銀行家算法模擬實(shí)現(xiàn)操作系統(tǒng)課程設(shè)計(jì)報(bào)告專業(yè)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)生姓名班級(jí)學(xué)號(hào)指導(dǎo)老師完成日期信息工程學(xué)院題目:銀行家算法的模擬實(shí)現(xiàn)一、設(shè)計(jì)目的本課程設(shè)計(jì)是學(xué)習(xí)完“操作系統(tǒng)原理”課程后進(jìn)展的一次全面的綜合訓(xùn)練,通過課程設(shè)計(jì),更好地掌握操作系統(tǒng)的原理及實(shí)現(xiàn)方法,加深對(duì)操作系統(tǒng)根底理論和重要算法的理解,加強(qiáng)學(xué)生的動(dòng)手才能。二、設(shè)計(jì)內(nèi)容1〕概述用C或C++語言編制銀行家算法通用程序,并檢測(cè)所給狀態(tài)的系統(tǒng)平安性。1.算法介紹:數(shù)據(jù)構(gòu)造:1〕可利用資向量Available;2〕最大需求矩陣Max;3〕分配矩陣Allocation;4〕需求矩陣Need2.功能介紹模擬實(shí)現(xiàn)Dijkstra的銀行家算法以防止死鎖的出現(xiàn),分兩局部組成:第一局部:銀行家算法〔掃描〕;第二局部:平安性算法。2〕設(shè)計(jì)原理一.銀行家算法的根本概念1、死鎖概念。在多道程序系統(tǒng)中,雖可借助于多個(gè)進(jìn)程的并發(fā)執(zhí)行,來改善系統(tǒng)的資利用率,進(jìn)步系統(tǒng)的吞吐量,但可能發(fā)生一種危險(xiǎn)━━死鎖。所謂死鎖(Deadlock),是指多個(gè)進(jìn)程在運(yùn)行中因爭(zhēng)奪資而造成的一種僵局(Deadly_Embrace),當(dāng)進(jìn)程處于這種僵持狀態(tài)時(shí),假設(shè)無外力作用,它們都將無法再向前推進(jìn)。一組進(jìn)程中,每個(gè)進(jìn)程都無限等待被該組進(jìn)程中另一進(jìn)程所占有的資,因此永遠(yuǎn)無法得到的資,這種現(xiàn)象稱為進(jìn)程死鎖,這一組進(jìn)程就稱為死鎖進(jìn)程。2、關(guān)于死鎖的一些結(jié)論:?參與死鎖的進(jìn)程最少是兩個(gè)?〔兩個(gè)以上進(jìn)程才會(huì)出現(xiàn)死鎖〕?參與死鎖的進(jìn)程至少有兩個(gè)已經(jīng)占有資?參與死鎖的所有進(jìn)程都在等待資?參與死鎖的進(jìn)程是當(dāng)前系統(tǒng)中所有進(jìn)程的子集注:假如死鎖發(fā)生,會(huì)浪費(fèi)大量系統(tǒng)資,甚至導(dǎo)致系統(tǒng)崩潰。3、資分類。永久性資:可以被多個(gè)進(jìn)程屢次使用〔可再用資〕l可搶占資l不可搶占資臨時(shí)性資:只可使用一次的資;如信號(hào)量,中斷信號(hào),同步信號(hào)等〔可消耗性資〕“申請(qǐng)--分配--使用--釋放”形式4、產(chǎn)生死鎖的四個(gè)必要條件:互斥使用〔資獨(dú)占〕、不可侵占〔不可剝奪〕、懇求和保持〔局部分配,占有申請(qǐng)〕、循環(huán)等待。1)互斥使用〔資獨(dú)占〕一個(gè)資每次只能給一個(gè)進(jìn)程使用。2)不可侵占〔不可剝奪〕資申請(qǐng)者不能強(qiáng)行的從資占有者手中奪取資,資只能由占有者自愿釋放。3)懇求和保持〔局部分配,占有申請(qǐng)〕一個(gè)進(jìn)程在申請(qǐng)新的資的同時(shí)保持對(duì)原有資的占有〔只有這樣才是動(dòng)態(tài)申請(qǐng),動(dòng)態(tài)分配〕。4)循環(huán)等待存在一個(gè)進(jìn)程等待隊(duì)列{P1,P2,…,Pn},其中P1等待P2占有的資,P2等待P3占有的資,…,Pn等待P1占有的資,形成一個(gè)進(jìn)程等待環(huán)路。5、死鎖預(yù)防:定義:在系統(tǒng)設(shè)計(jì)時(shí)確定資分配算法,保證不發(fā)生死鎖。詳細(xì)的做法是破壞產(chǎn)生死鎖的四個(gè)必要條件之一。①破壞“不可剝奪”條件在允許進(jìn)程動(dòng)態(tài)申請(qǐng)資前提下規(guī)定,一個(gè)進(jìn)程在申請(qǐng)新的資不能立即得到滿足而變?yōu)榈却隣顟B(tài)之前,必須釋放已占有的全部資,假設(shè)需要再重新申請(qǐng)②破壞“懇求和保持”條件。要求每個(gè)進(jìn)程在運(yùn)行前必須一次性申請(qǐng)它所要求的所有資,且僅當(dāng)該進(jìn)程所要資均可滿足時(shí)才給予一次性分配。③破壞“循環(huán)等待”條件采用資有序分配法:把系統(tǒng)中所有資編號(hào),進(jìn)程在申請(qǐng)資時(shí)必須嚴(yán)格按資編號(hào)的遞增次序進(jìn)展,否那么操作系統(tǒng)不予分配。6.平安狀態(tài)與不平安狀態(tài)平安狀態(tài):假如存在一個(gè)由系統(tǒng)中所有進(jìn)程構(gòu)成的平安序列P1,…Pn,那么系統(tǒng)處于平安狀態(tài)。一個(gè)進(jìn)程序列{P1,…,Pn}是平安的,假如對(duì)于每一個(gè)進(jìn)程Pi(1≤i≤n〕,它以后尚需要的資量不超過系統(tǒng)當(dāng)前剩余資量與所有進(jìn)程Pj(j#include#include#include//定義全局變量constintx=20,y=20;//常量,便于修改intAvailable[x];//各資可利用的數(shù)量intAllocation[y][y];//各進(jìn)程當(dāng)前已分配的資數(shù)量intMax[y][y];//各進(jìn)程對(duì)各類資的最大需求數(shù)intNeed[y][y];//尚需多少資intRequest[x];//申請(qǐng)多少資intWork[x];//工作向量,表示系統(tǒng)可提供應(yīng)進(jìn)程繼續(xù)運(yùn)行所需的各類資數(shù)量intFinish[y];//表示系統(tǒng)是否有足夠的資分配給進(jìn)程,1為是intp[y];//存儲(chǔ)平安序列inti,j;//i表示進(jìn)程,j表示資intn,m;//n為進(jìn)程i的數(shù)量,m為資j種類數(shù)intl=0;//l用來記錄有幾個(gè)進(jìn)程是Finish[i]=1的,當(dāng)l=n是說明系統(tǒng)狀態(tài)是平安的intcounter=0;//函數(shù)聲明voidchushihua;//初始化函數(shù)voidsafe;//平安性算法voidshow;//函數(shù)show,輸出當(dāng)前狀態(tài)voidbank;//銀行家算法//voidjieshu;//完畢函數(shù)voidchushihua{cout>n;cout>m;cout>Available[j];//輸入數(shù)字的過程...Work[j]=Available[j];//初始化Work[j],它的初始值就是當(dāng)前可用的資數(shù)}cout>Allocation[i][j];}cout>Max[i][j];if(Max[i][j]>=Allocation[i][j])//假設(shè)最大需求大于已分配,那么計(jì)算需求量Need[i][j]=Max[i][j]-Allocation[i][j];elseNeed[i][j]=0;//Max小于已分配的時(shí)候,此類資已足夠不需再申請(qǐng)}cout=Need[i][j])counter=counter+1;//可用大于需求,記數(shù)}if(counter==m)//i進(jìn)程的每類資都符合Work[j]>=Need[i][j]條件二{p[l]=i;//存儲(chǔ)平安序列Finish[i]=1;//i進(jìn)程標(biāo)志為可分配for(j=0;j>k;coutn-1)//輸入錯(cuò)誤處理{cout>k;cout>Request[j];coutNeed[k][j]){//申請(qǐng)大于需求量時(shí)出錯(cuò),提示重新輸入〔貸款數(shù)目不允許超過需求數(shù)目〕coutAvailable[j]){//申請(qǐng)大于可利用量,應(yīng)該阻塞等待?……???coutNeed[k][j]);//Request[j]>Available[j]||}//改變Avilable、Allocation、Need的值for(j=0;j“b;cout“<<“進(jìn)程“<<“(“<截圖如下:5〕設(shè)計(jì)小結(jié)這次我做的課題是“銀行家算法的模擬實(shí)現(xiàn)”,通過這次的課程設(shè)計(jì),我不僅拓寬了自己的知識(shí)面,還在理論過程中穩(wěn)固和加深了自己所學(xué)的理論知識(shí),使自己的技術(shù)素質(zhì)和理論才能有了進(jìn)一步的進(jìn)步,同時(shí)我的專業(yè)程度也有了很大的進(jìn)步。同時(shí),在軟件開發(fā)方面也累積了不少經(jīng)歷,對(duì)操作系統(tǒng)的知識(shí)重要性的認(rèn)識(shí)更深了。通過設(shè)計(jì)過程的鍛煉,自己分析^p問題和解決問題的才能都得到了鍛煉和進(jìn)步,完善了自己的知識(shí)構(gòu)造,加深了對(duì)所學(xué)知識(shí)的理解。通過幾天努力,這次課程設(shè)計(jì)圓滿的完畢了,在這個(gè)過程中,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 江西高考生物試題及答案
- 家具產(chǎn)品定價(jià)策略與設(shè)計(jì)思路的關(guān)系試題及答案
- 土木工程知識(shí)更新與學(xué)習(xí)建議試題及答案
- 家具設(shè)計(jì)的潮流趨勢(shì)與消費(fèi)者心理研究試題及答案
- 如何構(gòu)建有效的創(chuàng)業(yè)扶持政策體系試題及答案
- 早產(chǎn)兒試題及答案多選
- 殯儀館理論試題及答案
- 《步入WEBGIS編程殿堂》課件
- 農(nóng)業(yè)電商的多元化發(fā)展策略研究試題及答案
- 四年級(jí)數(shù)學(xué)(三位數(shù)乘兩位數(shù))計(jì)算題專項(xiàng)練習(xí)及答案
- 2025年中國(guó)脊柱骨水泥行業(yè)市場(chǎng)前景預(yù)測(cè)及投資價(jià)值評(píng)估分析報(bào)告
- 電機(jī)節(jié)能協(xié)議書模板
- 2024年四川西南石油大學(xué)招聘事業(yè)編制輔導(dǎo)員考試真題
- 2025年寧夏吳忠紅寺堡區(qū)公開招聘社區(qū)工作者46人筆試備考題庫(kù)及答案解析
- 表型組學(xué)技術(shù)助力作物育種效率提升
- 中學(xué)教育基礎(chǔ)(上)知到課后答案智慧樹章節(jié)測(cè)試答案2025年春陜西師范大學(xué)
- 金融數(shù)學(xué)考試及答案
- 食品運(yùn)輸過程安全管理措施
- 2024屆高考專題復(fù)習(xí)北京高考模擬考《論語》試題
- 樓梯 欄桿 欄板(一)22J403-1
- 醫(yī)院基建工作流程
評(píng)論
0/150
提交評(píng)論