实时调度算法 |
您所在的位置:网站首页 › clock页面调度算法 › 实时调度算法 |
实时调度算法 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;T1e-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(tAA+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; } 三、实验结果截图: 【实时调度算法】相关文章: 1.一种基于比特表的实时多任务新调度算法 2.动态车间调度算法 3.Hadoop集群作业调度算法 -电脑资料 4.车辆优化调度算法研究初探 5.磁盘调度算法 -电脑资料 6.广东高速实时路况 7.实时性远程答疑系统 8.基于Web的实时答疑系统 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |