Name,Pre,NeedTime,ReachTime,RunTime++);
}
NeedTime--;
}
pop(&pcb);
}
}
/*段作业优先*/
void SJF(Top1 *Top,int num)
{
int i,j,temp,sum=0;
int Name,Pre,NeedTime,ReachTime,RunTime;
int Name1,Pre1,NeedTime1,ReachTime1,RunTime1;
Top1 pcb;
Top1 pcb1;
Top1 pcb2;
initStack(&pcb);
initStack(&pcb1);
/*翻转放入另一栈中*/
for(i=0;i
ReachTime=getreachTime(&pcb);
RunTime=getrunTime(&pcb);
push(&pcb1,Name,Pre,NeedTime,ReachTime,RunTime);
pop(&pcb);
}
else if(itemp)
{
Name1=getname(&pcb1);
Pre1=getpre(&pcb1);
NeedTime1=getneedTime(&pcb1);
ReachTime1=getreachTime(&pcb1);
RunTime1=getrunTime(&pcb1);
pop(&pcb1);
push(&pcb1,Name,Pre,NeedTime,ReachTime,RunTime);
push(&pcb1,Name1,Pre1,NeedTime1,ReachTime1,RunTime1);
}
else push(&pcb1,Name,Pre,NeedTime,ReachTime,RunTime);
pop(&pcb);
}
Name=getname(&pcb1);
Pre=getpre(&pcb1)-1;
NeedTime=getneedTime(&pcb1)-1;
ReachTime=getreachTime(&pcb1);
RunTime=getrunTime(&pcb1)+1;
if(NeedTime<0||NeedTime==0)
{
printf("%d %d %d %d %d \n",
Name,Pre,NeedTime,ReachTime,RunTime);
printf("process %d is over.\n",Name);
pop(&pcb1);
}
else
{
printf("%d %d %d %d %d \n",
Name,Pre,NeedTime,ReachTime,RunTime);
setneedTime(&pcb1,NeedTime);
setrunTime(&pcb1,RunTime);
setpre(&pcb1,Pre);
}
}
}
/*时间片轮转*/
void RR(Top1 *Top,int num)
{
int i,j,temp,sum=0;
int Name,Pre,NeedTime,ReachTime,RunTime;
int Name1,Pre1,NeedTime1,ReachTime1,RunTime1;
Top1 pcb;
Top1 pcb1;
Top1 pcb2;
initStack(&pcb);
initStack(&pcb1);
for(i=0;i
{
Name=getname(&pcb);
Pre=getpre(&pcb);
NeedTime=getneedTime(&pcb);
ReachTime=getreachTime(&pcb);
RunTime=getrunTime(&pcb);
push(&pcb1,Name,Pre,NeedTime,ReachTime,RunTime);
pop(&pcb);
Name=getname(&pcb1);
Pre=getpre(&pcb1)-1;
NeedTime=getneedTime(&pcb1)-1;
ReachTime=getreachTime(&pcb1);
RunTime=getrunTime(&pcb1)+1;
if(NeedTime<0||NeedTime==0)
{
printf("%d %d %d %d \n",
Name,NeedTime,ReachTime,RunTime);
printf("process %d is over.\n",Name);
pop(&pcb1);
num--;
}
else
{
printf("%d %d %d %d \n",
Name,NeedTime,ReachTime,RunTime);
setneedTime(&pcb1,NeedTime);
setrunTime(&pcb1,RunTime);
}
i++;
}
temp=num;
for(i=0;i
push(&pcb,Name,Pre,NeedTime,ReachTime,RunTime);
pop(&pcb1);
}
}
}
/*高响应比优先*/
void HRRN(Top1 *Top,int num)
{
int i,j,temp,sum=0;
int Name,Pre,NeedTime,ReachTime,RunTime;
int Name1,Pre1,NeedTime1,ReachTime1,RunTime1;
Top1 pcb;
Top1 pcb1;
Top1 pcb2;
initStack(&pcb);
initStack(&pcb1);
for(i=0;i