我试图了解最小松弛时间(LST)算法是如何工作的。使用posix线程实现这一点的可能方法是什么。我指的是http://man7.org/linux/man-pages/man7/sched.7.html。我看不到支持松弛的调度宏。我在googled上搜索了一下,但是找不到这样的调度程序。我知道松弛是来自一个线程执行时间窗口的时间,在线程完成执行后处于空状态,并且可以被需要时间的相同进程的线程所捕食。我知道它像航空电子显示器一样在工业中使用。如果可以给出一种已经存在于posix线程的方法,这将有所帮助。
发布于 2017-03-10 11:06:24
实际上,LST不是进程的本地线程,而是选择预期完成时间最接近其截止日期的线程。LST的问题是您需要(非常好的)猜测线程的执行时间,这是一个复杂的问题。因此,人们通常采用EDF策略,该策略具有相同的性能,但不需要超过截止日期的另一个参数。
编辑
为了回答你的补充问题:因为它是相当复杂的,我只能给出一个草图。首先:一般情况下无法预测运行时。理论计算机科学中有一个著名的结果,即人们甚至无法预测程序是否会终止。(参见停止问题)然而,通过限制递归深度和边界循环,我们可以通过代码确定临界路径(使用图论的结果)。现在,您需要该路径的任何指令的执行时间。然而,这远不是决定性的。流水线、缓存和无序执行使计算更加困难。当然,可以通过例如关闭缓存来避免其中的一些影响。但是你的运行时间比需要的要长得多。总结一下:通过一些度量,您可以提供运行时的上限。如果你想减少高估,你必须考虑很多细节。
关于这个话题,有无数的文献(google预测),甚至还有一些好的工具。然而,如果不付出很大的努力,按运行时本身的顺序来过高估计也不算太糟糕。
https://stackoverflow.com/questions/42577689
复制相似问题