1、实时调度最早截止时间优先算法一、 设计思路最早截止时间算法是根据任务的开始截止时间来确定任务的优先级,截止时间愈早,其优先级愈高,我以书上的抢占式调度方式用于周期实时任务的例子来编写程序,在该例中有两个周期性任务,我设计的可以输入这两个的周期时间和服务时间,然后比较它们的截止时间,哪个截止时间早就谁先执行,在单处理机情况下,必须满足CiPiint main()int A,B; /标记进程 A,进程 B 的到达时间int cycA,cycB,serveA,serveB; /进程的周期时间和服务时间float m;int i,j,a=0,b=0,ka=0,kb=0; /ka,kb 为开关,i,j,
2、a,b 为进程下标int numa=0,numb=0; /服务累计时间printf(“输入进程 A 的周期时间,服务时间: “);scanf(“%d%d“,printf(“输入进程 B 的周期时间,服务时间: “);scanf(“%d%d“,m=(float)serveA/cycA+(float)serveB/cycB;for(int T=0;T1e-6)printf(“超出 CPU 的处理能力!n“);return 0;if(numa=serveA) /进程 A 完成numa=serveA+1;printf(“当 T=%d 时“,T);printf(“进程 A%d 结束 n“,a);if(n
3、umbA+cycA) /若进程 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%cycA!=0printf(“当 T=%d 时“,T);printf(“进程 B%d 产生,“,+b); /不可能与进程 B 竞争处理器numb=0;if(numa=A+cycA) /进程 A 的最早截止时间不小于 Bprintf(“进程 A%d 继续执行。 n“,a);elseprintf(“进程 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;