实时调度中的DBF函数

最近在阅读文献时,看到这样一个DBF函数,全名是“Demand Bound Function”,函数定义如下:

在这里插入图片描述
它描述了任务τi的所有job在时间间隔(time interval)t内对计算时间的需求量,前提是对于每一个job,它的arrival time和deadline要包含在t内。
注意这个函数总是与理论最优调度算法对应,也就是说在采用理论最优调度算法时,可以用此函数来计算τi的job在t内对执行时间的需求量。而对sporadic task来说,EDF是最优的调度算法,所以该函数常用来进行EDF的可调度性分析。
(所以又引出了另一个需要学习的问题:具体是如何利用DBF来做EDF的可调度性分析?)

这个函数的关键是:job的arrival time和deadline都要包含在t内,从计算公式不难看出,只有在这种情况下一个完整的Ci才会被加入总的DBF中。
起初这个函数的思想让我很难理解,在求助学长后得以解决,关注下面的例子:

假设存在两个任务,采用EDF算法调度,任务参数如下:
τ1: C=3,D=4,T=5
τ2: C=1,D=3,T=4
时序关系如下:
在这里插入图片描述
以t=6为例,去分别计算两个任务的DBF,发现τ1的DBF是3,而τ2的DBF是1,但在实际时序图中,t=6之前明明执行满了6个time unit。
这里要注意:demand并不等同于实际的execution time!
DBF认为只要当前job的deadline不包含在t内,那么该job就不产生任何执行时间的需求,但实际中,该job还是运行了一些时间的。当t由6改为7时,此时τ2的DBF马上变为了2,即两次job需求的C。

假设此时加入第三个任务τ3,它的D3(deadline)=6,那么可以对它进行如下的可调度性分析:
IF ( D3 - DBF(τ1,D3) - DBF(τ2,D3) <= C ) ———C为τ3的执行时间
此时在计算τ1和τ2的DBF时,DBF会认为当前有deadline更加紧急的job,所以当前τ1和τ2的job的执行都可以被推后(这体现了“最优”的思想),这也就是为什么在上图中,这两个任务的第二个job在t=6之前的执行时间都可以不计入各自的DBF。

但这样做会带来一个问题,由于τ1和τ2的第二个job的执行时间被“无形中”推后了,那么它们会不会错过各自的deadline呢?
所以在利用DBF做EDF的可调度性分析时,在一个LCM(T1,T2,T3…)中,对每个任务的每个deadline都要做一次可调度性分析(这里可能不准确,因为对于减少分析次数的相关工作也有许多,而我还没有学习到),这将是很庞大的工作量。

以上是我对DBF函数原理的一些理解,如有错误,欢迎指出^ _ ^

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值