}
void cputime() {int i; int m,h; for(i=0;i window(lie+2*i-h,15+m,lie+2*i+2-h,15+m); switch(b[i]) {case 0: {textbackground(2); clrscr(); cprintf(\break; } case 1: {textbackground(2); clrscr(); cprintf(\break; } case 2: {textbackground(4); clrscr(); cprintf(\break; } case 3: {textbackground(4); clrscr(); cprintf(\break; } } } } main() { int i; time_t t; srand((unsigned) time(&t)); hour=3; mini=0; for(i=0;i k=rand()%(count+1); p=k; for(i=0;i {window(1,1,80,25); textbackground(1); clrscr(); textcolor(YELLOW); clrscr(); printf(\ printf(\ printf(\ printf(\ printf(\ printf(\ printf(\ if(hour==0&&mini==0) {window(1,1,80,25); textbackground(1); clrscr(); cprintf(\ getch(); return; } Press any key to exit!\ tim(); s=rand()%4; b[r]=s; r++; switch(s) { case 0:{p1_ok=1; sheng(pover1,ptim1,pttim1,0); if(p2_ok==1) {if(ptim2==pttim2) pdone=1; pshow(ptim2,pttim2,1); } if(v1_ok==1) vshow(vtim1,vttim1,2); if(v2_ok==1) vshow(vtim2,vttim2,3); break; } case 1:{if(p1_ok==1) {if(ptim1==pttim1) pdone=1; pshow(ptim1,pttim1,0); } p2_ok=1; sheng(pover2,ptim2,pttim2,1); if(v1_ok==1) vshow(vtim1,vttim1,2); if(v2_ok==1) vshow(vtim2,vttim2,3); break; } case 2:{if(p1_ok==1) {if(ptim1==pttim1) pdone=1; pshow(ptim1,pttim1,0); } if(p2_ok==1) {if(ptim2==pttim2) pdone=1; pshow(ptim2,pttim2,1); } v1_ok=1; xiao(vover1,vtim1,vttim1,2); if(v2_ok==1) vshow(vtim2,vttim2,3); break; } case 3:{if(p1_ok==1) {if(ptim1==pttim1) pdone=1; pshow(ptim1,pttim1,0); } if(p2_ok==1) {if(ptim2==pttim2) pdone=1; pshow(ptim2,pttim2,1); } if(v1_ok==1) vshow(vtim1,vttim1,2); v2_ok=1; xiao(vover2,vtim2,vttim2,3); break; } } memshow(); cputime(); sleep(1); } } 实验三 Banker algorithm(银行家算法) 一、实验名称 Banker algorithm(银行家算法) 二、实验目的 在了解和掌握银行家算法的基础上,能熟练的处理课本例题中所给状态的安全性问题,能编制银行家算法通用程序,将调试结果显示在计算机屏幕上,再检测和笔算的一致性。 三、实验内容 设计五个进程{P0,P1,P2,P3,P4}共享三类资源{A,B,C}的系统,{A,B,C}的资源数量分别为10,5,7。 进程可动态地申请资源和释放资源,系统按各进程的申请动态地分配资源。要求程序具有显示和打印各进程的某一时刻的资源分配表和安全序列;显示和打印各进程依次要求申请的资源号以及为某进程分配资源后的有关资源数据。 四、实验要求: 本实验要求用高级语言编写和调试一个简单的银行家算法程序。用银行家算法实现资源分配。 五、实验学时及环境 4学时,Turbo C、Visual C++、Visual Basic、Delphi均可。 六、实验思路: 设requesti为进程p[i]的请求向量,如果requesti[j]=K,表示进程p[i]需要K个Rj资源。当系统发出请求后,系统按下述步骤开始检查: 1.如果requesti[j]<=need[i][j],转向步骤2;否则报告出错,申请的资源已经大于它需要的最大值。 2.如果requesti[j]<=available[j],转向步骤3;否则报告出错,尚无足够的资源。 3.系统试探着把资源分配给p[i],并修改下列数据结构中的值: available[j]=available[j]-request[j] allocation[i][j]=allocation[i][j]+request[j] need[i][j]=need[i][j]-request[j] 4.系统进行安全性算法,检查此次分配后,系统是否还处于安全状态,若安全,把资源分配给进程p[i];否则,恢复原来的资源分配状态,让进程p[i]等待。 安全性算法: