实验一进程及其管理进程调度算法模拟,用动态优先数及时间片轮转法实现进程调度

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

#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;}}

1 / 6
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功