如何计算线程的松弛时间?

时间:2017-03-03 11:27:49

标签: multithreading operating-system posix scheduling scheduler

我试图了解最短时间(LST)算法的工作原理。使用posix线程实现这一点的可能方法是什么。我提到http://man7.org/linux/man-pages/man7/sched.7.html。我可以看到没有调度宏来支持松弛。我用google搜索了一下,找不到这样做的调度程序。我知道松弛是从线程完成执行后空闲的一个线程执行时间窗口开始的时间,并且可以由需要时间的相同进程的线程来捕获。我知道它在航空电子显示器等行业中使用。如果可以给出posix线程已存在的方法,将会有所帮助。

1 个答案:

答案 0 :(得分:1)

实际上,LST不是一个进程的本地,而是选择预期完成时间最接近它的截止日期的线程。 LST的问题在于你需要(非常好)猜测线程的执行时间,这是一个复杂的问题。出于这个原因,人们通常采用具有相同性能但不需要其他参数的EDF策略。

修改

回答你的其他问题:因为它非常复杂,我只能给一个草图。第一:您无法预测一般的运行时间。理论计算机科学存在一个着名的结果,即人们甚至无法预测程序是否会终止。(参见halting problem)然而,通过限制递归深度和边界循环,可以确定一个关键路径(通过代码使用图论的结果。现在您需要此路径的任何指令的执行时间。然而,这远非确定性。流水线操作,缓存和乱序执行会使计算更加困难。当然,可以通过例如以下方法避免这些效果中的一些。关闭缓存。但是,你得到的运行时间比需要的要长得多。 总结一下:通过一些措施,您可以提供运行时间的上限。如果你想减少过高估计,你必须考虑很多细节。

关于该主题存在大量文献(谷歌用于WCET预测),甚至还有一些好的工具。但是,如果没有实质性的努力,运行时间本身的高估并不算太糟糕。