




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、淮海工學(xué)院計(jì)算機(jī)工程學(xué)院實(shí)驗(yàn)報(bào)告書課程名:操作系統(tǒng)原理題目:銀行家算法班級(jí):學(xué)號(hào):姓名:評(píng)語(yǔ):成績(jī): 指導(dǎo)教師: 批閱時(shí)間:操作系統(tǒng)原理實(shí)驗(yàn)報(bào)告 -6 -一、實(shí)驗(yàn)?zāi)康你y行家算法是操作系統(tǒng)中避免死鎖的典型算法, 本實(shí)驗(yàn)可以加深對(duì)銀行家算法的步 驟和相關(guān)數(shù)據(jù)結(jié)構(gòu)用法的更好理解。實(shí)驗(yàn)環(huán)境Turbo C 2.0/3.0 或 VC+6.0實(shí)驗(yàn)學(xué)時(shí)4學(xué)時(shí),必做實(shí)驗(yàn)。二、實(shí)驗(yàn)內(nèi)容用C語(yǔ)言編寫一個(gè)簡(jiǎn)單的銀行家算法模擬程序,用銀行家算法實(shí)現(xiàn)資源分配。程序 能模擬多個(gè)進(jìn)程共享多種資源的情形。進(jìn)程可動(dòng)態(tài)地申請(qǐng)資源,系統(tǒng)按各進(jìn)程的申請(qǐng)動(dòng)態(tài)地分配資源。要求程序具有顯示和打印各進(jìn)程的某一時(shí)刻的資源分配表和安全序列; 顯示
2、和打印各進(jìn)程依次要求申請(qǐng)的資源數(shù)量以及為某進(jìn)程分配資源后的有關(guān)資源數(shù)據(jù) 的情況。三、實(shí)驗(yàn)說(shuō)明實(shí)驗(yàn)中進(jìn)程的數(shù)量、資源的種類以及每種資源的總量Totalj最好允許動(dòng)態(tài)指定。初始時(shí)每個(gè)進(jìn)程運(yùn)行過(guò)程中的最大資源需求量 Maxi,j和系統(tǒng)已分配給該進(jìn)程的資源量 Allocationi,j均為已知(這些數(shù)值可以在程序運(yùn)行時(shí)動(dòng)態(tài)輸入),而算法中其他數(shù)據(jù)結(jié) 構(gòu)的值(包括Needi,j、Availablej)則需要由程序根據(jù)已知量的值計(jì)算產(chǎn)生。四、實(shí)驗(yàn)步驟1、理解本實(shí)驗(yàn)中關(guān)于兩種調(diào)度算法的說(shuō)明。2、根據(jù)調(diào)度算法的說(shuō)明,畫出相應(yīng)的程序流程圖。3、按照程序流程圖,用C語(yǔ)言編程并實(shí)現(xiàn)。五、分析與思考1 要找出某一狀態(tài)
3、下所有可能的安全序列,程序該如何實(shí)現(xiàn)?答:要找出這個(gè)狀態(tài)下的所有可能的安全序列,前提是要是使這個(gè)系統(tǒng)先處于安全狀態(tài),而 系統(tǒng)的狀態(tài)可通過(guò)以下來(lái)描述:進(jìn)程剩余申請(qǐng)數(shù)=最大申請(qǐng)數(shù)-占有數(shù);可分配資源數(shù)=總數(shù)-占有數(shù)之和;通過(guò)這個(gè)描述來(lái)算出系統(tǒng)是否安全,從而找出所有的安全序列。2 銀行家算法的局限性有哪些?答:銀行家算法是一種最有代表性的避免死鎖的算法。銀行家算法即把操作系統(tǒng)看作是銀行 家,操作系統(tǒng)管理的資源相當(dāng)于銀行家管理的資金,進(jìn)程向操作系統(tǒng)請(qǐng)求分配資源相當(dāng)于用戶向銀 行家貸款。操作系統(tǒng)按照銀行家制定的規(guī)則為進(jìn)程分配資源,當(dāng)進(jìn)程首次申請(qǐng)資源時(shí),要測(cè)試該進(jìn) 程對(duì)資源的最大需求量,如果系統(tǒng)現(xiàn)存的資源
4、可以滿足它的最大需求量則按當(dāng)前的申請(qǐng)量分配資源, 否則就推遲分配。當(dāng)進(jìn)程在執(zhí)行中繼續(xù)申請(qǐng)資源時(shí),先測(cè)試該進(jìn)程已占用的資源數(shù)與本次申請(qǐng)的資源數(shù)之和是否超過(guò)了該進(jìn)程對(duì)資源的最大需求量。若超過(guò)則拒絕分配資源,若沒(méi)有超過(guò)則再測(cè)試系 統(tǒng)現(xiàn)存的資源能否滿足該進(jìn)程尚需的最大資源量,若能滿足則按當(dāng)前的申請(qǐng)量分配資源,否則也要 推遲分配。但任何一種算法都存在其缺點(diǎn),對(duì)各進(jìn)程的資源分配要求嚴(yán)格,經(jīng)常使其處于不安全狀 態(tài),銀行家算法的主要局限是過(guò)于謹(jǐn)慎和檢查各申請(qǐng)者對(duì)各類資源的最大需求量開(kāi)銷較大。六、測(cè)試數(shù)據(jù)與實(shí)驗(yàn)結(jié)果銀行家算法流程圖(1)所示:圖(1)銀行家算法流程運(yùn)行結(jié)果如圖(2) (3)所示:JOI x|請(qǐng)輸
5、入各逬程己經(jīng)申請(qǐng)的資源量知旳矩陣ion 1:0 102 0 03 U 2系統(tǒng)目前可用的資< b c3 3 2圖(2)圖(3)銀行家算法截圖七、實(shí)驗(yàn)心得與體會(huì)銀行家算法是操作系統(tǒng)中避免死鎖的典型算法。所謂死鎖:是指兩個(gè)或兩個(gè)以上的進(jìn)程在執(zhí)行過(guò)程中,因爭(zhēng)奪資源而造成的一種互相等待的現(xiàn)象,若無(wú)外力作用,它們都將無(wú)法推進(jìn)下去。此時(shí) 稱系統(tǒng)處于死鎖狀態(tài)或系統(tǒng)產(chǎn)生了死鎖,這些永遠(yuǎn)在互相等待的進(jìn)程稱為死鎖進(jìn)程。由于資源占用是互斥的,當(dāng)某個(gè)進(jìn)程提出申請(qǐng)資源后,使得有關(guān)進(jìn)程在無(wú)外力協(xié)助下,永遠(yuǎn)分配不到必需的資源 而無(wú)法繼續(xù)運(yùn)行,這就產(chǎn)生了一種特殊現(xiàn)象死鎖。通過(guò)這次實(shí)驗(yàn),加深了我對(duì)銀行家算法的了解,掌握了如
6、何利用銀行家算法避免死鎖。在實(shí)驗(yàn)中,難免會(huì)遇到問(wèn)題,通過(guò)自己在網(wǎng)上查找資料、詢問(wèn)同學(xué),這些問(wèn)題都得到了解決,完成了本次實(shí)驗(yàn)。通過(guò)這次的實(shí)驗(yàn),使我的理論知識(shí)更加的牢固。附錄#in clude<iostream.h>#in clude<stri ng.h>#in clude<stdio.h>#defi ne False 0#defi ne True 1int Max100100=0; int Avaliable100=0; char name100=0;各進(jìn)程所需各類資源的最大需求 系統(tǒng)可用資源資源的名稱int Allocati on 100100=0;系統(tǒng)已分
7、配資源int Need100100=0; 還需要資源int Request100=0;請(qǐng)求資源向量int temp100=0;存放安全序列int Work100=0;存放系統(tǒng)可提供資源int M=100; 作業(yè)的最大數(shù)為 100int N=100;資源的最大數(shù)為 100void showdata()顯示資源矩陣 int i,j; cout<<"系統(tǒng)目前可用的資源Avaliable:"<<e ndl;for(i=0;i<N;i+)cout< <n amei<<""cout<<e ndl;fo
8、r (j=0;j<N;j+)cout<<Avaliablej<<" "/輸出分配資源cout<<e ndl;cout<<"Max AllocationNeed"<<e ndl;cout<<" 進(jìn)程名 "for(j=0;j<3;j+)for(i=0;i<N;i+)cout< <n amei<<""cout<<""cout<<e ndl;for(i=0;i<
9、M;i+)cout<<" "<<i<<""for(j=0;j<N;j+)cout<<Maxij<<""cout<<""for(j=0;j<N;j+) cout<<Allocationij<<""cout<<""for(j=0;j<N;j+)操作系統(tǒng)原理實(shí)驗(yàn)報(bào)告 -8 -cout<<Needij<<" ”;cout<
10、;<e ndl;int cha ngdata(i nt i)進(jìn)行資源分配int j;for (j=O;j<M;j+) Avaliablej=Avaliablej-Requestj;Allocatio n ij=Allocatio n ij+Requestj;Needij=Needij-Requestj;return 1;int safe()安全性算法int i,k=O,m,apply,Fi ni sh100=0;int j;int flag=0;Work0=Avaliable0;Work1=Avaliable1;Work2=Avaliable2;for(i=0;i<M;i+)
11、apply=0;for(j=0;j<N;j+)if (Fi nishi=False&&Needij<=Workj) apply+;if(apply=N) for(m=0;m<N;m+)Workm=Workm+Allocatio nim;變分配數(shù)Fini shi=True;tempk=i;i=-1;k+;flag+;for(i=0;i<M;i+)if(Fi nishi=False)cout<<"系統(tǒng)不安全"<<endl;不成功系統(tǒng)不安全return -1;cout<<" 系統(tǒng)是安全的!&qu
12、ot;<<endl;如果安全,輸出成功cout<<" 分配的序列:";for(i=0;i<M;i+)輸出運(yùn)行進(jìn)程數(shù)組cout<<tempi;if(i<M-1) cout<<"->"cout<<e ndl;return 0;void share()利用銀行家算法對(duì)申請(qǐng)資源對(duì)進(jìn)行判定char ch;int i=0,j=0;ch='y'cout<<"請(qǐng)輸入要求分配的資源進(jìn)程號(hào)(0-"<<M-1<<"):
13、"cin >>i;輸入須申請(qǐng)的資源號(hào)cout<<"請(qǐng)輸入進(jìn)程"<<i<<"申請(qǐng)的資源:"<<endl;for(j=0;j<N;j+)cout< <n amej<<":"cin >>Requestj;輸入需要申請(qǐng)的資源for (j=0;j<N;j+)if(Requestj>Needij)/判斷申請(qǐng)是否大于需求,若大于則出錯(cuò)cout<<" 進(jìn)程"<<i<<&qu
14、ot;申請(qǐng)的資源大于它需要的資源"cout<<"分配不合理,不予分配!"<<e ndl;ch=' n'break;else if(Requestj>Avaliablej)判斷申請(qǐng)是否大于當(dāng)前資源,若大于則/出錯(cuò)cout<<" 進(jìn)程"<<i<<"申請(qǐng)的資源大于系統(tǒng)現(xiàn)在可利用的資源"cout<<" 分配出錯(cuò),不予分配 !"<<e ndl;ch=' n'break;if(ch='y&
15、#39;) cha ngdata(i);/根據(jù)進(jìn)程需求量變換資源showdata();根據(jù)進(jìn)程需求量顯示變換后的資源safe();/根據(jù)進(jìn)程需求量進(jìn)行銀行家算法判斷操作系統(tǒng)原理實(shí)驗(yàn)報(bào)告 -11 -void addresources()添加資源int n, flag;cout<<"請(qǐng)輸入需要添加資源種類的數(shù)量:";cin»n;flag=N;N=N+n;for(int i=0;i<n;i+)cout<<"名稱:"cin»n ameflag;cout<<"數(shù)量:"cin>
16、>Avaliableflag+;showdata();safe();void delresources()刪除資源char ming;int i,flag=1;cout<<"請(qǐng)輸入需要?jiǎng)h除的資源名稱:"docin»ming;for(i=0;i<N;i+)if(mi ng=n amei)flag=0;break;if(i=N)cout<<"該資源名稱不存在,請(qǐng)重新輸入:1while(flag);for(i nt j=i;j<N-1;j+)n amej=n amej+1;Avaliablej=Avaliablej+1
17、;N=N-1;showdata();safe();void cha ngeresources()修改資源函數(shù)cout<<"系統(tǒng)目前可用的資源 Avaliable:"<<endl;for(i nt i=0;i<N;i+)cout< <n amei<<":"<<Avaliablei<<e ndl; cout<<"輸入系統(tǒng)可用資源Avaliable:"<<endl; cin >>Avaliable0»Avaliable
18、1»Avaliable2;cout<<"經(jīng)修改后的系統(tǒng)可用資源為"<<endl;for (int k=0;k<N;k+)cout< <n amek<<":"<<Avaliablek<<e ndl;showdata();safe();void addprocess()添加作業(yè)int flag=M;M=M+1;cout<<"請(qǐng)輸入該作業(yè)的最打需求量Max"<<endl;for(int i=0;i<N;i+)cout<
19、 <n amei<<":"cin>> Maxflagi;Needflagi=Maxflagi-Allocati on flagi;showdata();safe();int mai n()主函數(shù)int i,j,number,choice,m,n,flag; char ming;cout<<*單處理機(jī)系統(tǒng)進(jìn)程調(diào)度實(shí)現(xiàn)*"<<e ndl;cout<<"請(qǐng)首先輸入系統(tǒng)可供資源種類的數(shù)量 cin»n;N=n;for(i=0;i< n;i+)cout<<"資源&
20、quot;<<i+1<<"的名稱:"cin»ming;n amei=ming;cout<<"資源的數(shù)量:"cin»nu mber;Avaliablei=nu mber;cout<<e ndl;cout<<"請(qǐng)輸入作業(yè)的數(shù)量:" cin»m;M=m;cout<<"請(qǐng)輸入各進(jìn)程的最大需求量("<<m<<"*"<<*<"矩陣)Max:"&l
21、t;<endl;for(i=0;i<m;i+)for(j=0;j< n;j+)cin>> Maxij;doflag=0;cout<<"請(qǐng)輸入各進(jìn)程已經(jīng)申請(qǐng)的資源量("<<m<<"*"<<*<"矩陣)Allocation:"<<endl;for(i=0;i<m;i+)for(j=0;j< n;j+)cin> >Allocatio nij;if(Allocatio n ij>Maxij)flag=1;Needij=Maxij-Allocati on ij;if(flag)cout<<"申請(qǐng)的資源大于最大需求量,請(qǐng)重新輸入!n"wh
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 貴州省畢節(jié)市2025屆高三年級(jí)高考第三次適應(yīng)性考試歷史試題(含答案)
- 2024年模具設(shè)計(jì)師資格考試長(zhǎng)線規(guī)劃試題及答案
- 電力安全用具課件
- 快速掌握游泳救生員考試試題及答案
- 醫(yī)院服務(wù)禮儀培訓(xùn)醫(yī)護(hù)禮儀培訓(xùn)資料課件
- 切實(shí)可行的2024年體育經(jīng)紀(jì)人考試計(jì)劃試題及答案
- 基礎(chǔ)扎實(shí)的體育經(jīng)紀(jì)人試題及答案
- 模具設(shè)計(jì)師的任務(wù)與職責(zé)分析試題及答案
- 2024籃球裁判員角色定位試題及答案
- 農(nóng)作物種子繁育員考試中的常見(jiàn)誤區(qū)和糾正試題及答案
- 技術(shù)制作類科學(xué)教育活動(dòng)的設(shè)計(jì)與組織指導(dǎo)課件
- 藥事管理法律法規(guī)相關(guān)知識(shí)培訓(xùn)
- PQR-按ASME要求填寫的焊接工藝評(píng)定報(bào)告
- 醫(yī)院中央空調(diào)維保合同范本
- 勞動(dòng)工傷起訴狀
- 第4章-選區(qū)激光熔化工藝及材料課件
- 2023屆高考寫作指導(dǎo):“尋找溫暖”與“成為燈火”課件
- 2022年上海市工業(yè)技術(shù)學(xué)校招聘考試真題
- 臨時(shí)用電演示文稿
- 部編版語(yǔ)文一年級(jí)下冊(cè)第六單元大單元教學(xué)任務(wù)群設(shè)計(jì)
- JJG 646-2006移液器
評(píng)論
0/150
提交評(píng)論