PCB *head; //headΪ¾ÍÐ÷¶ÓÁеÄÍ·Ö¸Õë
PCB *run=NULL; //runΪִÐнø³Ì½áµãµÄÖ¸Õë PCB *block=NULL; //blockΪ×èÈû½ø³ÌµÄ½áµã PCB *temp;
printf(\ÇëÊäÈë½ø³ÌµÄ¸öÊý:\scanf(\
head=CreatQueue(num); getchar(); temp=head;
while(temp!=NULL) { alltime+=temp->alltime; temp=temp->next; }
while(alltime > 0) { if(head!=NULL) { run=head; //°Ñ¾ÍÐ÷¶ÓÁÐÖеĵÚÒ»¸ö½ø³ÌÈ¡³öÀ´Ö´ÐÐ head=head->next; //¾ÍÐ÷¶ÓÁеÄÍ·Ö¸ÕëÖ¸ÏòÏÂÒ»¸ö½áµã strcpy(run->state,\ //״̬¸ÄΪִÐÐ run->next=NULL;
/*ÏÔʾ״̬*/
printf(\ //ÏÔʾִÐнø³Ì printf(\ //ÏÔʾ¾ÍÐ÷½ø³Ì temp=head;
while(temp!=NULL) { printf(\ temp=temp->next; }
printf(\
printf(\ //ÏÔʾ×èÈû½ø³Ì if(block!=NULL) { printf(\ } printf(\ printf(\=======\\n\ printf(\STARTBLOCK BLOCKTIME STATE\\n\ printf(\%d %d %d %d %d %s\\n\
state); temp=head; while(temp!=NULL) { printf(\%d %d %d %d %d %s\\n\time,temp->state); temp=temp->next; } if(block!=NULL) { printf(\%d %d %d %d %d %s\me,block->state); } printf(\ printf(\=======\\n\ /*ÏÔʾ״̬*/ 1
/*¸Ä±äÓÅÏÈÊý*/
run->priority-=3; //Ö´Ðнø³ÌµÄÓÅÏÈÊý¼õ3 temp=head;
while(temp!=NULL) //¾ÍÐ÷½ø³ÌµÄÓÅÏÈÊý¼Ó1 { temp->priority+=1; temp=temp->next; }
/*¸Ä±äÓÅÏÈÊý*/
/*¸Ä±äÖ´Ðнø³ÌµÄÓйزÎÊý*/
run->cputime+=1; //Ö´Ðнø³ÌµÄÒÑÕ¼ÓÃCPUʱ¼ä¼Ó1 run->alltime-=1; //»¹ÐèÒªµÄCPUʱ¼ä¼õ1 if(run->alltime!=0) { if(run->startblock > 0) //Èç¹û¸Ã½ø³Ì»á±»×èÈû { run->startblock-=1; //Ö´ÐÐÍêÒ»¸öʱ¼äƬºó£¬¿ªÊ¼×èÈûµÄʱ¼ä¼õ
if(run->startblock==0) //Èç¹û×èÈûµÄʱ¼äµ½ÁË { block=run; //Ö´ÐÐת×èÈû strcpy(block->state,\ //״̬ת×èÈû alltime--; printf(\
continue; } } strcpy(run->state,\ //״̬ת¾ÍÐ÷ head=InsertQueue(head,run); //Ö´ÐÐת¾ÍÐ÷ run=NULL; }
/*¸Ä±äÖ´Ðнø³ÌµÄÓйزÎÊý*/ alltime--; } else {
/*ÏÔʾ״̬*/ printf(\ //ÏÔʾִÐнø³Ì printf(\ //ÏÔʾ¾ÍÐ÷½ø³Ì printf(\ //ÏÔʾ×èÈû½ø³Ì if(block!=NULL) { printf(\ } printf(\ printf(\=======\\n\ printf(\STARTBLOCK BLOCKTIME STATE\\n\ if(block!=NULL) { printf(\%d %d %d %d %d %s\me,block->state); } printf(\ printf(\=======\\n\
/*ÏÔʾ״̬*/ }
/*¸Ä±ä×èÈû½ø³ÌµÄÓйزÎÊý*/
if(block!=NULL) //Èç¹ûÓÐ×èÈû½ø³Ì { block->blocktime-=1; //±»×èÈûµÄʱ¼ä¼õ1 if(block->blocktime==0) //Èç¹û±»×èÈûµÄʱ¼äµ½ÁË { strcpy(block->state,\ //״̬ת¾ÍÐ÷
}
}
}
}
head=InsertQueue(head,block); //×èÈûת¾ÍÐ÷ block=NULL;
/*¸Ä±ä×èÈû½ø³ÌµÄÓйزÎÊý*/ getchar();