发布时间 : 星期三 文章操作系统实验题目及实验报告要求 - 图文更新完毕开始阅读
int value;
struct available *next; };
struct need /*需求资源数*/ { int value; struct need *next; };
struct path { int value; struct path *next; };
struct finish { int stat;
struct finish *next; }; int main() {
int row,colum,status=0,i,j,t,temp,processtest; struct allocation *allochead,*alloc1,*alloc2,*alloctemp; struct max *maxhead,*maxium1,*maxium2,*maxtemp; struct available
*avahead,*available1,*available2,*workhead,*work1,*work2,*worktemp,*worktemp1; struct need *needhead,*need1,*need2,*needtemp; struct finish *finihead,*finish1,*finish2,*finishtemp; struct path *pathhead,*path1,*path2; printf(\请输入系统资源的种类数:\ scanf(\
printf(\请输入现时内存中的进程数:\ scanf(\
printf(\请输入已分配资源矩阵:\\n\ for(i=0;i for (j=0;j printf(\请输入已分配给进程 p%d 的 %c 种系统资源:\ if(status==0) { allochead=alloc1=alloc2=(struct allocation*)malloc(alloclen); alloc1->next=alloc2->next=NULL; scanf(\ status++; } else { alloc2=(struct allocation *)malloc(alloclen); scanf(\ if(status==1) { allochead->next=alloc2; status++; } alloc1->next=alloc2; alloc1=alloc2; } } } alloc2->next=NULL; status=0; printf(\请输入最大需求矩阵:\\n\ for(i=0;i for (j=0;j { printf(\请输入进程 p%d 种类 %c 系统资源最大需求:\ if(status==0) { maxhead=maxium1=maxium2=(struct max*)malloc(maxlen); maxium1->next=maxium2->next=NULL; scanf(\ status++; } else { maxium2=(struct max *)malloc(maxlen); scanf(\ if(status==1) { maxhead->next=maxium2; status++; } maxium1->next=maxium2; maxium1=maxium2; } } } maxium2->next=NULL; status=0; printf(\请输入现时系统剩余的资源矩阵:\\n\ for (j=0;j printf(\种类 %c 的系统资源剩余:\ if(status==0) { avahead=available1=available2=(struct available*)malloc(avalen); workhead=work1=work2=(struct available*)malloc(avalen); available1->next=available2->next=NULL; work1->next=work2->next=NULL; scanf(\ work1->value=available1->value; status++; } else { available2=(struct available*)malloc(avalen); work2=(struct available*)malloc(avalen); scanf(\ work2->value=available2->value; if(status==1) { avahead->next=available2; workhead->next=work2; status++; } available1->next=available2; available1=available2; work1->next=work2; work1=work2; } } available2->next=NULL; work2->next=NULL; status=0; alloctemp=allochead; maxtemp=maxhead; for(i=0;i if(status==0) { needhead=need1=need2=(struct need*)malloc(needlen); need1->next=need2->next=NULL; need1->value=maxtemp->value-alloctemp->value; status++; } else { need2=(struct need *)malloc(needlen); need2->value=(maxtemp->value)-(alloctemp->value); if(status==1) { needhead->next=need2; status++; } need1->next=need2; need1=need2; } maxtemp=maxtemp->next; alloctemp=alloctemp->next; } need2->next=NULL; status=0; for(i=0;i if(status==0) { finihead=finish1=finish2=(struct finish*)malloc(finilen); finish1->next=finish2->next=NULL; finish1->stat=0; status++; } else { finish2=(struct finish*)malloc(finilen); finish2->stat=0; if(status==1)