实时任务分配是0 1背包问题(n个任务分配到m个背包中,每个物品价值相等),为了获得理论最优的任务分配方法(穷举法,时间复杂度多核实时调度—任务分配启发式算法解读_启发式算法,即非多项式复杂度,为n的指数),NP-Hard,前面文章说了,PTAS算法可在运行时多项式时间复杂度以认为给定 多核实时调度—任务分配启发式算法解读_时间复杂度_02 误差精度(即偏离程度)接近理论最优(其实原理就是预处理阶段提前用穷举法计算好了放在一个查找表里,运行时和这个表里进行查找匹配即可)

PTAS方法虽然好,但是操作麻烦。因此采用一些启发式算法,虽然不一定能获得理论最优分配的成功度,即不一定能达到最优,但是它们是很可能能达到最优的,而且这些方法时间复杂度也低,而且不占内存,而且实现简单。

启发式算法(heuristic algorithm)是相对于最优化算法提出的。一个问题的最优算法求得该问题每个实例的最优解。启发式算法可以这样定义:一个基于直观或经验构造的算法,在可接受的花费(指计算时间和空间)下给出待解决组合优化问题每一个实例的一个可行解,该可行解与最优解的偏离程度一般不能被预计
 

实时任务分配启发式分配方法一般有First-Fit,Next-Fit,Best-Fit,Worst-Fit。这些算法就是凭借经验构造的,比如觉得任务按照大到小的顺序,总先分配在第一个核,应该能获得接近最优的分配策略。这就是FF算法。

其中FF的可调度性最高,WF均衡性最好,但是可调度性最差。

WF最坏情况下,任务集利用率只要超过1,就不可调度了,即一定可调度的上界是U<1。比如,4个核,无穷多个任务{0.011,0.011,0.011,......,0.011,0.99},该任务集总利用率趋近于1,这个任务集在任意多核的处理器上分配会失败,因为WF先把0.011这样的任务占据了每个核,导致0.99无论分配哪个核都会失败了。而如果是FF就不会这样了。