1、#includeconio.hstring.h#define MAX 24struct jcb char name10;int reqtime;int runtime;int startime;int fintime;int prio;char status;typedef struct jcb JCB;void input(JCB job,int *pnum) int num; int i; printf(process 数:); scanf(%d,&num); for(i=0;inum;i+) n第%d个process:n,i+1);输入proc名:%s,jobi.name);Priori
2、ty:jobi.prio);要求服务时间:jobi.reqtime); jobi.status=r; jobi.runtime=0; *pnum=num; void jcbprintf(JCB jcbp,int n) if (n=0) printf(the queue is null! return;tnametpriotrqtimetruntimetstatusn;nN %dt&s,jcbpi.name);d,jcbpi.prio);,jcbpi.reqtime);,jcbpi.runtime);c,jcbpi.status); void btsort(JCB btjcb,int n) in
3、t i,j; JCB jcbtemp; for(j=1;jj+)n-j; if(btjcbi.priobtjcbi+1.prio) jcbtemp=btjcbi; btjcbi=btjcbi+1; btjcbi+1=jcbtemp; main() JCB jobarrivedMAX,jobfinishedMAX; int numarr, numfin; int systime=0; int i,j,n; JCB jcbrunning; input(jobarrived,&numarr); numfin=0; systime=0; btsort (jobarrived,numarr);经按pri
4、ority排序后,read queue是n jcbprintf(jobarrived,numarr); do btsort(jobarrived,numarr);nntt现在系统时间 %d:nn,systime);ready queue 有n jcbrunning=jobarrived0; numarr-;numarr; jobarrivedi=jobarrivedi+1; jcbrunning.status=R jcbrunning.startime=systime;nntt处于运行态的作业名 %sn,jcbrunning.name); systime+; jcbrunning.runtim
5、e+; if (jcbrunning.runtime=jcbrunning.reqtime) jobfinishednumfin=jcbrunning; jobfinishednumfin.status=F numfin+; else jcbrunning.prio-; jobarrivednumarr=jcbrunning; numarr+;nntt系统时间:%d已经完成的有nn jcbprintf(jobfinished,numfin); getchar(); while(numarr!=0);nCompleted! ByeBye!2、#includebtjcbi+1.arritime)
6、jcbtemp=btjcbi; void Printf(JCB job,int n)进程名称 运行时间 运行时间片n %s %d %dn,jobi.name,jobi.reqtime,jobi.runtime);void main()JCB jobarrivedMAX;int numarr,i;JCB jcbrunning;input(jobarrived,&n请按任意键继续.getchar();btsort(jobarrived,numarr);n按到达时间排序后,就绪队列是njcbprintf(jobarrived,numarr); jobarrivedi.runtime=0;n.就绪队列
7、是.nPrintf(jobarrived,numarr);while(numarr0)jcbrunning=jobarrived0;jcbrunning.reqtime=jcbrunning.reqtime-1;jcbrunning.runtime=jcbrunning.runtime+1;n正在执行的进程名称是%snif(jcbrunning.reqtimejobarrivednumarr-1=jcbrunning;elsenumarr-;3、#includejcbrunning=jobarrived30;if(jcbrunning.firsttime=3) if(jcbrunning.re
8、qtimejcbrunning.firsttime=jcbrunning.firsttime-1;jobarrived30=jcbrunning;if(jobarrived30.reqtime jobarrived2numarr2=jobarrived30; numarr2+;numarr3-;numarr3; jobarrived3i=jobarrived3i+1;Printf(jobarrived3,numarr3);Printf(jobarrived2,numarr2);Printf(jobarrived1,numarr1);while(numarr2jcbrunning=jobarri
9、ved20;if(jcbrunning.firsttime=2)2)jcbrunning.reqtime=jcbrunning.reqtime-2;jcbrunning.runtime=jcbrunning.runtime+2; else jcbrunning.firsttime=jcbrunning.firsttime-1; jcbrunning.reqtime=jcbrunning.reqtime-jcbrunning.reqtime; jcbrunning.runtime=jcbrunning.runtime+jcbrunning.reqtime;jobarrived20=jcbrunn
10、ing;if(jobarrived20.reqtime jobarrived1numarr1=jobarrived20; numarr1+;numarr2-;numarr2; jobarrived2i=jobarrived2i+1;while(numarr1jcbrunning=jobarrived10;if(jcbrunning.firsttime=1)0) jcbrunning.reqtime=jcbrunning.reqtime-jcbrunning.reqtime;jcbrunning.runtime=jcbrunning.runtime+jcbrunning.reqtime;numarr1-;numarr1; jobarriv
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1