block, finish };
struct pcb{ char name[4]; int priority; int cputime; int needtime; int count; int round; state process; pcb * next; };
pcb * get_process(); pcb * get_process(){ pcb *q; pcb *t; pcb *p; int i=0;
cout<<\
while (i q=(struct pcb *)malloc(sizeof(pcb)); cin>>q->name; cin>>q->needtime; q->cputime=0; q->priority=P_TIME-q->needtime; q->process=ready; q->next=NULL; if (i==0){ p=q; t=q; } else{ t->next=q; t=q; } i++; } //while return p; } void display(pcb *p){ cout<<\ \ \ \ while(p){ cout< case ready:cout<<\ case execute:cout<<\ case block:cout<<\ case finish:cout<<\ } p=p->next; } \ } int process_finish(pcb *q){ int bl=1; while(bl&&q){ bl=bl&&q->needtime==0; q=q->next; } return bl; } void cpuexe(pcb *q){ pcb *t=q; int tp=0; while(q){ if (q->process!=finish){ q->process=ready; if(q->needtime==0){ q->process=finish; } } if(tp if(t->needtime!=0){ t->priority-=3; t->needtime--; t->process=execute; t->cputime++; } } void priority_cal(){ pcb * p; p=get_process(); int cpu=0; while(!process_finish(p)){ cpu++; cout<<\ cpuexe(p); display(p); } printf(\ getch(); } void display_menu(){ cout<<\ cout<<\ cout<<\ cout<<\} pcb * get_process_round(){ pcb *q; pcb *t; pcb *p; int i=0; cout<<\ while (i q=(struct pcb *)malloc(sizeof(pcb)); cin>>q->name; cin>>q->needtime; q->cputime=0; q->round=0; q->count=0; q->process=ready; q->next=NULL; if (i==0){ p=q; t=q; } else{ t->next=q; t=q; } i++; } //while return p; } void cpu_round(pcb *q){ q->cputime+=2; q->needtime-=2; if(q->needtime<0) { q->needtime=0; } q->count++; q->round++; q->process=execute;