資源簡介
c語言實現的銀行家算法 有界面 基本滿足了要求 是操作系統書上的大實驗

代碼片段和文件信息
/*
*銀行家算法Bankers?Algorithm
*組員:林麗燕?胡嫄?張燈?賴彬彬?陳順帆?崔北辰?陳阿強
*/
#include?
#include?
#include??
#include“interface_and_cursor.h“
#define?m?50
#define?FALSE?0
#define?TRUE?1
int?process_num;??//進程數
int?resource_num;??//資源數
int?Allocation[m][m]Need[m][m]Available[m]Max[m][m];?
/*主界面輸入*/?????????????????????????
void?input()
{
view_form(21);
view_form(104);
gotoxy(272);
printf(“??**歡迎進入銀行家算法**“);
view_labal(21692“請輸入進程總數:“);
view_edit(42662);
????ui_tools_gotoxy(487);
scanf(“%d“&process_num);
view_labal(211092“請輸入資源種類數:“);
view_edit(421062);
????view_labal(191572“確定(Enter)“);
view_labal(421572“取消(Esc)“);
????ui_tools_gotoxy(4811);
????scanf(“%d“&resource_num); system(“cls“);
}
/*安全算法函數*/
void?safety_check()???
{
int?kfv=0ij;
int?work[m]a[m];
bool?Finish[m];
TRUE;
for(i=0;i Finish[i]=false;???//?初始化進程均沒得到足夠資源數并完成
for(i=0;i work[i]=Available[i];//work[i]表示可提供進程繼續運行的各類資源數
k=process_num;
do{
for(i=0;i {
if(Finish[i]==false)
{
f=1;
for(j=0;j if(Need[i][j]>work[j])
f=0;//f=0為false,f=1為true
if(f==1)??????//找到還沒有完成且需求數小于可提供進程繼續運行的資源數的進程
{
Finish[i]=true;
a[v++]=i;???//記錄安全序列號
for(j=0;j work[j]+=Allocation[i][j];??//釋放該進程已分配的資源
}
}
}
k--;??????//每完成一個進程分配,未完成的進程數就減1
}while(k>0);
f=1;
for(i=0;i {
if(Finish[i]==false)???
{
f=0;
break;
}
}
if(f==0)???????//若有進程沒完成,則為不安全狀態
{
gotoxy(1315);
printf(“系統處在不安全狀態!“);
FALSE;
}
else
{
gotoxy(1315);
printf(“系統當前為安全狀態,安全序列為:“);
for(i=0;i printf(“p%d??“a[i]);??//輸出安全序列
printf(“\n“);
}
}
/*輸出函數*/
void?output()?
{
int?ijs=0;
printf(“\n“);
gotoxy(136);
printf(“******************此時刻資源分配情況*******************\n“);
gotoxy(137);
printf(“進程名????|?????Max?????|??Allocation??|?????Need?????|\n“);
????gotoxy(138);
for?(i?=?0;?i? {
????????if(s<5){{
gotoxy(138+s);
}
printf(“??p%d???????“i);
s++;
}
for?(j?=?0;?j? {
printf(“?%d???“Max[i][j]);
}
for?(j?=?0;?j? {
printf(“?%d???“Allocation[i][j]);
}
for?(j?=?0;?j? {
printf(“?%d???“Need[i][j]);
}
printf(“\n“);
}
printf(“\n“);
gotoxy(1314);
printf(“各類資源可利用的資源數為:“);
for?(j?=?0;?j? {
printf(“?%d“Available[j]);
}
}
/*主函數*/
void?main(){
????void?safety_check();
void?output();
????int?row_index=0;
int?i=0jp=0q=0n=0r=0;
char?c;//為后面的c=getche()服務
int?Request[m]Allocation1[m][m]Need1[m][m]Available1[m];
input();
view_form(21);
view_form(104);
????gotoxy(203);
????printf(“矩陣輸入時隔位請用空格鍵,隔行請用Enter鍵!“
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????6885??2013-12-23?23:46??Bankers?Algorithm\Bankers?Algorithm.cpp
?????文件???????4570??2013-12-21?04:14??Bankers?Algorithm\Bankers?Algorithm.dsp
?????文件????????542??2013-12-21?04:14??Bankers?Algorithm\Bankers?Algorithm.dsw
?????文件??????50176??2013-12-25?16:56??Bankers?Algorithm\Bankers?Algorithm.ncb
?????文件??????48640??2013-12-25?16:56??Bankers?Algorithm\Bankers?Algorithm.opt
?????文件????????978??2013-12-25?12:33??Bankers?Algorithm\Bankers?Algorithm.plg
?????文件???????3069??2013-12-21?16:06??Bankers?Algorithm\Interface_and_Cursor.cpp
?????文件????????485??2013-12-21?04:15??Bankers?Algorithm\Interface_and_Cursor.h
?????文件?????208980??2013-12-25?12:33??Bankers?Algorithm\Debug\Bankers?Algorithm.exe
?????文件?????318892??2013-12-25?12:33??Bankers?Algorithm\Debug\Bankers?Algorithm.ilk
?????文件??????25366??2013-12-25?12:33??Bankers?Algorithm\Debug\Bankers?Algorithm.obj
?????文件????3574872??2013-12-22?00:40??Bankers?Algorithm\Debug\Bankers?Algorithm.pch
?????文件?????541696??2013-12-23?23:46??Bankers?Algorithm\Debug\Bankers?Algorithm.pdb
?????文件??????16533??2013-12-21?16:12??Bankers?Algorithm\Debug\Interface_and_Cursor.obj
?????文件?????148480??2013-12-25?12:39??Bankers?Algorithm\Debug\vc60.idb
?????文件??????77824??2013-12-23?23:46??Bankers?Algorithm\Debug\vc60.pdb
?????目錄??????????0??2013-12-28?23:38??Bankers?Algorithm\Debug
?????目錄??????????0??2013-12-28?23:38??Bankers?Algorithm
-----------?---------??----------?-----??----
??????????????5027988????????????????????18
評論
共有 條評論