ʹÓö¯Ì¬ÓÅÏÈȨµÄ½ø³Ìµ÷¶ÈËã·¨µÄÄ£ÄâʵÑé ÏÂÔØ±¾ÎÄ

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();