-
大小: 577KB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2021-06-08
- 語言: C/C++
- 標(biāo)簽: 操作系統(tǒng)??課程設(shè)計(jì)??C語言??
資源簡介
操作系統(tǒng) 課程設(shè)計(jì)任務(wù)書
銀行家算法
1)了解多道程序系統(tǒng)中,多個(gè)進(jìn)程并發(fā)執(zhí)行的資源分配。
2)掌握銀行家算法,了解資源在進(jìn)程并發(fā)執(zhí)行中的資源分配情況。
3)掌握預(yù)防死鎖的方法,系統(tǒng)安全狀態(tài)的基本概念。
設(shè)計(jì)一個(gè)n個(gè)并發(fā)進(jìn)程共享m個(gè)系統(tǒng)資源的程序以實(shí)現(xiàn)銀行家算法。要求:
1) 簡單的選擇界面;
2) 能顯示當(dāng)前系統(tǒng)資源的占用和剩余情況。
3) 為進(jìn)程分配資源,如果進(jìn)程要求的資源大于系統(tǒng)剩余的資源,不與分配并且提示分配不成功;
4) 撤銷作業(yè),釋放資源。
編寫和調(diào)試一個(gè)系統(tǒng)動(dòng)態(tài)分配資源的簡單模擬程序,觀察死鎖產(chǎn)生的條件,并采用適當(dāng)?shù)乃惴ǎ行У胤乐购捅苊馑梨i的發(fā)生。

代碼片段和文件信息
#include?
#include?
int??m=3;//m個(gè)系統(tǒng)資源
int??n=0;//n個(gè)并發(fā)進(jìn)程
int?Max[20][20];//={{753}{322}{902}{222}{433}};????????????//最大需求矩陣???
int?Available[20];//={1032};????????????????????????????????????????????//可利用資源向量?
int?Allocation[20][20];//={{010}{200}{302}{211}{002}};?????//分配矩陣
int?Need[20][20];//={{743}{122}{600}{011}{431}};???????????//需求矩陣
int?Request[20];??
int?queue[20];????//進(jìn)程Pi的請求向量
//*******************************************************************************
int?output()??//顯示各個(gè)矩陣資源分配情況
{
?int?klt;t=65;
?printf(“\n**********************************************************\n“);
???printf(“ ???MAX?“);
???for(l=0;l ???printf(“Allocation?“);
???for(l=0;l ????printf(“Need?“);
???for(l=0;l ??printf(“Available?“);
???for(l=0;l ???printf(“\n“);
???
?//printf(“????????A???B???C????A???B???C????A???B???C????A???B???C??“);
?printf(“????????“);
?for(l=0;l<4;l++)
?{for(k=0;k ????printf(“%c???“65+k);
????printf(“??“);}
?for(k=0;k ?{
??printf(“\nP%d??????“k);
??for(l=0;l ????printf(“%d???“Max[k][l]);printf(“??“);
??for(l=0;l ????printf(“%d???“Allocation[k][l]);printf(“??“);
??for(l=0;l ??printf(“%d???“Need[k][l]);printf(“??“);
??if(k==0)?{
??for(l=0;l ??printf(“%d???“Available[l]);
??}
?}
?return?1;
}
//*****************************************************************************
int?input()??//資源分配情況的錄入。
{
?int?ij;int?t=65;
?????//printf(“\n請輸入系統(tǒng)的未分配資源數(shù):“);
?//?scanf(“%d%d%d“AvailableAvailable+1Available+2);
?//for(i=0;i<5;i++)
?????printf(“\n????????????????資源名稱:“);
?for(i=0;i ?printf(“\n請輸入p%d的最大需求資源數(shù):“n);
?for(i=0;i ??
?printf(“\n????????????????資源名稱:“);
?for(i=0;i ?printf(“\n請輸入p%d的已分配的資源數(shù):“n);
?for(i=0;i ?//for(i=0;i ??for(j=0;j ?
??Need[n][j]=Max[n][j]-Allocation[n][j];
?????for(i=0;i ?{
?????Available[i]-=Allocation[n][i];
?}
??
????n++;
?return?1;
}
//*****************************************************************************
int?safe(){//安全性檢查?返回1?表示安全?有安全隊(duì)列?queue?返回0表示不安全
int?doneapply=0;int?t;
????int?ij;int?work[20];
int?finish[20]={0};
????for(j=0;j ?while(apply {
??t=0;
for(i=0;i {
?done=0;
?if(finish[i]!=false)?{continue;}
???for(j=0;j ???{?
???if(Need[i][j]?>work[j])?{done=1;?break;?}
???}?
?if(done==0)
?{
?for(j=0;j ???finish[i]=true;
???queue[apply]=i;apply++;t=1;
?}
}
if(t==0)??return?false;
}??
??return?1;
}
//***************************************************************
int?dijkstra(in
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件?????839168??2013-06-29?15:40??操作系統(tǒng)課程設(shè)計(jì)\操作系統(tǒng)-課程設(shè)計(jì)報(bào)告.doc
?????文件???????6313??2013-01-14?22:00??操作系統(tǒng)課程設(shè)計(jì)\源代碼及運(yùn)行程序\dijkstra.cpp
?????文件?????200781??2013-01-14?22:00??操作系統(tǒng)課程設(shè)計(jì)\源代碼及運(yùn)行程序\dijkstra.exe
?????目錄??????????0??2013-06-29?15:40??操作系統(tǒng)課程設(shè)計(jì)\源代碼及運(yùn)行程序
?????目錄??????????0??2013-06-29?15:41??操作系統(tǒng)課程設(shè)計(jì)
-----------?---------??----------?-----??----
??????????????1046262????????????????????5
評論
共有 條評論