当前位置: 首页 > >

作业优先调度算法 先来先服务、短作业调度算法(c语言描述)

发布时间:

/*先来先服务调度算法*/

#include

#define N 10

int Arival[N]={0};

int Go[N]={0};

int Start[N]={0};

int End[N]={0};

int Timer[N]={0};

float DTimer[N]={0};

int Check[N]={0};

int Select(int a[],int n){


int i=0;


for(int k=0;k

if(Check[k]==0){


i=k;


break;


}


}


for(int j=0;j

if(a[i]>a[j]&&Check[j]==0){


i=j;


}


}


Check[i]=1;


return i;

}

int main(){


int n,k=0,l=0,Atimer=0,timer=0;


printf("进程的个数:");


scanf("%d",&n);


for(int i=0;i

printf("第%d个进程的到达时间:",i+1);


scanf("%d",Arival+i);


printf("第%d个进程的运行时间:",i+1);


scanf("%d",Go+i);


}


k=Select(Arival,n);


Start[k]=Arival[k];


End[k]=Start[k]+Go[k];


Timer[k]=End[k]-Arival[k];


DTimer[k]=(float)Timer[k]/Go[k];


printf("提交时间 ?运行时间 ?开始时间 ?结束时间 ?周转时间 ?带权周转时间
");


for(int m=0;m

l=k;


k=Select(Arival,n);


Start[k]=End[l];


End[k]=Start[k]+Go[k];


Timer[k]=End[k]-Arival[k];


DTimer[k]=(float)Timer[k]/Go[k];


Atimer=Timer[l]+Atimer;


timer=timer+DTimer[l];


printf(" ?%2d ? ? ? ?%2d ? ? ? ? %2d ? ? ? ?%2d ? ? ? ?%2d ? ? ? ? %.2f
",Arival[l],Go[l],Start[l],End[l],Timer[l],DTimer[l]);


}


printf("*均周转时间:%.2f
",(float)Atimer/n);


printf("*均带权周转时间:%.2f
",(float)timer/n);


return 0;

}











/*短作业优先调度算法*/

#include

#define N 10

int Arival[N]={0};

int Go[N]={0};

int Start[N]={0};

int End[N]={0};

int Timer[N]={0};

float DTimer[N]={0};

int Check[N]={0};

int Select(int a[],int n,int local){


int i=0;


for(int k=0;k

if(Check[k]==0){


i=k;


break;


}


}


for(int j=0;j

if(a[i]>a[j]&&Check[j]==0&&Arival[j]<=local){


i=j;


}


}


Check[i]=1;


return i;

}

int main(){


int n,k=0,l=0,Atimer=0,timer=0,localtime=0;


printf("进程的个数:");


scanf("%d",&n);


for(int i=0;i

printf("第%d个进程的到达时间:",i+1);


scanf("%d",Arival+i);


printf("第%d个进程的运行时间:",i+1);


scanf("%d",Go+i);


}


Start[k]=Arival[k];


End[k]=Start[k]+Go[k];


Timer[k]=End[k]-Arival[k];


DTimer[k]=(float)Timer[k]/Go[k];


localtime=End[k];


Check[k]=1;


printf("进程 ?提交时间 ?运行时间 ?开始时间 ?结束时间 ?周转时间 ?带权周转时间
");


for(int m=0;m

l=k;


k=Select(Go,n,localtime);


Start[k]=End[l];


End[k]=Start[k]+Go[k];


Timer[k]=End[k]-Arival[k];


DTimer[k]=(float)Timer[k]/Go[k];


localtime=End[k];


Atimer=Timer[l]+Atimer;


timer=timer+DTimer[l];


printf(" %d ? ? %2d ? ? ? ?%2d ? ? ? ? %2d ? ? ? ?%2d ? ? ? ?%2d ? ? ? ? %.2f
",l,Arival[l],Go[l],Start[l],End[l],Timer[l],DTimer[l]);


}


printf("*均周转时间:%.2f
",(float)Atimer/n);


printf("*均带权周转时间:%.2f
",(float)timer/n);


return 0;


}






先来先服务,到达时间为标准!


短作业,运行时间为标准!


周转时间:作业从提交给系统开始,到作业完成的这一段时间间隔。


带权周转时间:作业周转时间与服务时间的比值。





友情链接: