实时调度算法

时间:2021-11-08 15:22:26 资料 我要投稿

实时调度算法

EDF实时调度算

一、基本思想:

在该实验中有两个周期性任务A、B,A的周期时间为20ms,每个周期的处理时间为10ms;任务B的.周期时间为50ms,每个周期的处理时间为25ms。 在t=0是,A1和B1同时到达,由于A1的截止时间比B1早,故调度A1执行;在t=10时,A1完成,又调度B1执行;在t=20时,A2到达,由于A2的截止时间比B2早,B1被中断而调度A2执行;在t=30时,A2完成,又重新调度B1执行;在t=40时,A3到达,但B1的截止时间要比A3早,仍执行B1,在t=45时,B1执行完,再调度A3执行;在t=55时,A3完成,调度B2执行。该实验将最早截止时间优先算法用于抢占调度方式。在该实验中,定义了两个开关来判断两个任务是中断还是调度执行。

二、源程序代码:

#include

int main()

{

int A,B;

int tA,tB,serveA,serveB; //进程的周期时间和处理时间

float m;

int i,j,a=0,b=0,ka=0,kb=0; //ka,kb为开关,i,j,a,b为进程下标

int numa=0,numb=0; //处理累计时间

printf("输入进程A的周期时间和处理时间:");

scanf("%d%d",&tA,&serveA);

printf("输入进程B的周期时间和处理时间:");

scanf("%d%d",&tB,&serveB);

m=(float)serveA/tA+(float)serveB/tB;

for(int T=0;T<=100;T++)

{

if(m-1>1e-6)

{

printf("超出CPU的处理能力!\n");

return 0;

}

if(numa==serveA) //进程A完成

{

numa=serveA+1;

printf("当T=%d时",T);

printf("进程A%d完成\n",a);

if(numb

{

printf(" 调度进程B%d\n",b);

kb=1;

}

ka=0;

}

if(numb==serveB)

{

numb=serveB+1;

printf("当T=%d时",T);

printf("进程B%d结束\n",b);

if(numa

{

printf(" 调度进程A%d\n",a);

ka=1;

}

kb=0;

}

if(T%tA==0 && T%tB==0)

{

A=B=T;

j=++a;

i=++b;

printf("当T=%d时,进程A%d和进程B%d同时到达,此时,",T,j,i); if(tA<=tB)

{

printf("调度进程A%d,中断进程B%d\n",j,i);

ka=1;

kb=0;

}

else

{

printf("调度进程B%d,中断进程A%d\n",i,j);

ka=0;

kb=1;

}

numa=numb=0;

}

if(T%tA==0&&T%tB!=0)

{

A=T;

printf("当T=%d时",T);

printf("进程A%d到达 ",++a); //不可能与进程A竞争处理器 numa=0;

if(numb

if(B+tB>A+tA) //若进程B最早截止时间大于进程A的 {

printf("进程A%d执行。\n",a);

ka=1;

kb=0;

}

else //若进程B最早截止时间小于等于进程A的

printf("进程B%d继续执行。\n",b);

else //进程B完成

{

printf("进程A%d执行。\n",a);

ka=1;

}

}

if(T%tA!=0&&T%tB==0)

{

B=T;

printf("当T=%d时",T);

printf("进程B%d到达,",++b); //不可能与进程B竞争处理器

numb=0;

if(numa

if(B+tB>=A+tA) //进程A的最早截止时间不小于B printf("进程A%d继续执行。\n",a);

else

{

printf("进程B%d执行。\n",b);

kb=1;

ka=0;

}

else //进程A完成

{

printf("进程B%d执行。\n",b);

kb=1; 实时调度算法 }

}

if(ka)

numa++;

if(kb)

numb++;

}

return 1;

}

三、实验结果截图:

【实时调度算法】相关文章:

一种基于比特表的实时多任务新调度算法01-20

动态车间调度算法07-07

磁盘调度算法 -电脑资料01-01

基于UKF的测速定轨实时算法07-15

基于A*算法的实时航迹规划方法研究07-25

车辆调度问题的混合算法07-08

车辆优化调度算法研究初探11-05

Hadoop集群作业调度算法 -电脑资料01-01

靶场弹道跟踪实时数据平滑算法及实现07-29