您好,欢迎访问三七文档
当前位置:首页 > 高等教育 > 理学 > 实验一进程及其管理进程调度算法模拟,用动态优先数及时间片轮转法实现进程调度
#includestdio.h//界面voidmenu(intarr[][5]){inti,j;printf(********进程相关信息如下:***********\n);for(i=0;i5;i++){switch(i){case0:printf(ID:);for(j=0;j5;j++)printf(%d,arr[i][j]);printf(\n);break;case1:printf(PRI:);for(j=0;j5;j++)printf(%d,arr[i][j]);printf(\n);break;case2:printf(CPUTIMEL:);for(j=0;j5;j++)printf(%d,arr[i][j]);printf(\n);break;case3:printf(NEADTIME:);for(j=0;j5;j++)printf(%d,arr[i][j]);printf(\n);break;case4:printf(STATE:);for(j=0;j5;j++)printf(%d,arr[i][j]);printf(\n);break;}}printf(\n*************进程调度过程如下:************\n\n);}//选出最大的优先级由大到小排列voidsort(inta[],intb[],intc[]){inttemp,t,s,i,j;for(i=0;i4;i++){for(j=0;j4-i;j++){if(a[j]a[j+1]){temp=a[j];a[j]=a[j+1];a[j+1]=temp;t=b[j];b[j]=b[j+1];b[j+1]=t;s=c[j];c[j]=c[j+1];c[j+1]=s;}}}}voidmain(void){inti;intPRIORITY[5]={0};intCPUTIME[5]={0};intALLTIME[5]={0};intID[5]={0};//ID,PRI,CPUTIME,NEADTIME,STATEintarr[][5]={{0,1,2,3,4},{9,38,30,29,0},{0,0,0,0,0},{3,3,6,3,4},{0,0,0,0,0}};menu(arr);//二维数组的数据存到一维中for(i=0;i5;i++){ID[i]=arr[0][i];PRIORITY[i]=arr[1][i];CPUTIME[i]=arr[2][i];ALLTIME[i]=arr[3][i];}while(1){if(ALLTIME[0]=0){ID[0]=-1;}sort(PRIORITY,ID,ALLTIME);//对优先级由大到小排序if(ID[0]!=-1){printf(当前正运行的进程:%d\n,ID[0]);printf(当前的等待序列为:);for(i=1;i5;i++){if(ID[i]!=-1)printf(%d,ID[i]);}printf(\n\n*******************************\n);}PRIORITY[0]-=3;CPUTIME[0]+=1;ALLTIME[0]-=1;}}
本文标题:实验一进程及其管理进程调度算法模拟,用动态优先数及时间片轮转法实现进程调度
链接地址:https://www.777doc.com/doc-2457941 .html