版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、操作系統實驗報告題目:銀行家算法班級:網絡工程姓名:朱錦濤學號: E31314037.一、實驗目的用代碼實現銀行家算法,了解通過銀行家算法避免死鎖的思想。通過代碼的具體實現,加深對算法的核心的理解。二、實驗原理我們可以把操作系統看作是銀行家, 操作系統管理的資源相當于銀行家管理的資金, 進程向操作系統請求分配資源相當于用戶向銀行家貸款。操作系統按照銀行家制定的規(guī)則為進程分配資源,當進程首次申請資源時, 要測試該進程對資源的最大需求量, 如果系統現存的資源可以滿足它的最大需求量則按當前的申請量分配資源,否則就推遲分配。當進程在執(zhí)行中繼續(xù)申請資源時,先測試該進程已占用的資源數與本次申請的資源數之和
2、是否超過了該進程對資源的最大需求量。 若超過則拒絕分配資源, 若沒有超過則再測試系統現存的資源能否滿足該進程尚需的最大資源量,若能滿足則按當前的申請量分配資源,否則也要推遲分配。三、實驗內容源程序:#include#include.#includetypedef struct Procedurei nt Max3;/滿足此進程需要三類資源的數量i nt Allocation3;/系統已經為該進程分配的資源情況i nt Need3;/該進程還需要資源數量i nt flag;/標志位,執(zhí)行完之前為0,執(zhí)行完之后為1char p; /在執(zhí)行完之后,給出相應的編號,如P1, P2struct Proc
3、edure * pNext;Pro,*PNODE; /如果系統資源足夠多的話, 那么所有的安全序列的數量就會是5*4*3*2*1=120個PNODE create_list(int &len);void traverse_list(PNODE pHead);int cnt_exe(PNODE pHead,int *system,int i); /計算目前系統能夠執(zhí)行的進程數.int work(PNODE pHead,int *system);int main()i nt ok;i nt len; srand(time(0);i nt system3 = rand()%5+10,rand()%5
4、+2,rand()%5+5;printf(系統中可用的各類資源數分別為 :%d %d %dn,system0,system1,system2);Pro *pHead = create_list(len);t raverse_list(pHead);i nt cnt = cnt_exe(pHead,system,3);i f(cnt = 0)printf(對不起,不存在安全序列n);return 0;.elseint ok = work(pHead,system);if(ok = len)printf(恭喜!存在安全序列!n);elseprintf(很抱歉!不存在安全序列!n);r eturn
5、0;PNODE create_list(int &len)i nt i,j;.char c = A; /用來臨時存放用戶輸入的結點的值/ / 分配了一個不存放有效數據的頭結點PNODE pHead = (PNODE)malloc(sizeof(Pro);i f (NULL = pHead)printf(分配失敗 ,程序終止 !n);exit(-1);PNODE pTail = pHead;pTail-pNext = NULL;printf(請輸入您需要生成的鏈表節(jié)點的個數:);scanf(%d, &len);f or (i=0; ilen; +i).PNODE pNew = (PNODE)ma
6、lloc(sizeof(Pro);if (NULL = pNew)printf(分配失敗 ,程序終止 !n);exit(-1);for(j=0;jMaxj = rand()%5+4;pNew-Allocationj = rand()%5;pNew-Needj= pNew-Maxj- pNew-Allocationj;pNew-flag = 0;pNew-p = c;pTail-pNext = pNew;pNew-pNext = NULL;.pTail = pNew;c+;r eturn pHead;void traverse_list(PNODE pHead)PNODE p = pHead-p
7、Next;i nt i = 1;while (NULL != p)printf( 第%d個資源的需要資源總數各為 :%d %d %d,i, p-Max0,p-Max1,p-Max2);.printf(n);printf(第%d個資源已分配資源總數各為:%d %d %d,i,p-Allocation0,p-Allocation1,p-Allocation2);printf(n);printf(第%d個資源還需要資源總數各為:%d %d %d,i,p-Need0,p-Need1,p-Need2);printf(n);printf(n);p = p-pNext;i+;printf(n);r etur
8、n;int cnt_exe(PNODE pHead,int *system,int i).PNODE p;p = pHead-pNext; /p指向第一個節(jié)點i nt count = 0; while(p != NULL)if(system0= p-Need0& system1= p-Need1& system2 = p-Need2) count+;p = p-pNext;r eturn count;int work(PNODE pHead,int *system).PNODE p;p = pHead-pNext; /p指向第一個節(jié)點int ok = 0;while(p != NULL)if(
9、system0= p-Need0& system1= p-Need1& system2 = p-Need2)system0 += p-Allocation0;system1 += p-Allocation1;system2 += p-Allocation2;p-flag = 1;ok+;printf(系統已經為您執(zhí)行了進程:%cn,p-p);PNODE q;.q = pHead;/尋找 q 的前一個節(jié)點,方便刪掉q節(jié)點while( q-pNext != p )q = q-pNext;q-pNext = p-pNext;free(p);p = NULL;p = pHead-pNext;/p又重新指向第一個節(jié)點elsep = p-pNext;.r eturn ok;存在安全序列的情況:不存在安全序列的情況:.四、實驗小結用隨機數為系統分配三類資源的個數,隨后系統為每個作業(yè)分配每個資源需要的個數和已經分配的資源數量, 那么還需要資源的數量則有最大分配量減去已經分配的數量。系統在隊列中尋找能滿足當前條件的作業(yè),運行完之后, 將其資源釋放, 把各類資源重新還給系統。把運行完之后的作業(yè)從隊列中刪除, 系統再從隊列開
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 兒童呼吸道合胞病毒(RSV)指南應對指導
- 2025 小學四年級思想品德上冊文明上網承諾書課件
- 2026年劇本殺運營公司禮品采購管理制度
- 云浮行政管理培訓課件
- 北京市房山區(qū)2024-2025學年八年級上學期期末生物試題(含答案)
- 生態(tài)農業(yè)科普教育基地建設2025年項目技術創(chuàng)新與農業(yè)人才培養(yǎng)計劃報告
- 2026年制造科技工業(yè)機器人報告
- 新能源汽車充電樁運營管理平臺2025年充電樁能源管理效率提升可行性報告
- 2026年及未來5年中國化工泵行業(yè)競爭格局分析及投資戰(zhàn)略咨詢報告
- 2026年及未來5年中國馬口鐵包裝容器行業(yè)市場運營現狀及投資規(guī)劃研究建議報告
- 銀行安全保衛(wèi)基礎知識考試試題及答案
- 2025年云南中煙工業(yè)公司招聘考試考試筆試試卷【附答案】
- 肝癌課件簡短
- 業(yè)務協同考核管理辦法
- 操盤手勞動合同附加協議
- 2025年中學生守則及中學生日常行為規(guī)范
- 理解當代中國 大學英語綜合教程1(拓展版)課件 B1U3 Into the green
- 醫(yī)藥展會活動方案
- 【庫潤數據】2025口服抗衰消費者趨勢洞察報告
- 快遞車輛運輸管理辦法
- 麻醉術后健康教育
評論
0/150
提交評論