在不久的将来安排任务

时间:2013-06-07 04:23:11

标签: algorithm job-scheduling

问题是关于安排任务。假设在任何时候都有新任务进入,并且将来需要解决。此外,我们没有关于安排其他任务的确切时间的信息,但我们知道计划在下一个 x 小时的任务数量。

简单的解决方案是,安排当前时间。在这种情况下,可能会发生,已经有太多待处理任务,导致任务的执行 中出现 延迟。因此,我们需要在将来使用它,以便执行任务的延迟不是问题。此外,与此同时,我确实有一个时间上限,指定必须在指定的截止日期前执行新任务。

因此,简而言之,问题是,我们应该如何安排,传入新任务以​​便 -

i)任务没有太多的滞后。

ii)任务在指定的截止日期内执行。

假设所有任务都具有相同的优先级和相同的截止期限值。因此,遵循先到先得的技术。

2 个答案:

答案 0 :(得分:1)

解决方案:

  1. 为每项任务指定优先级。每当具有更高优先级的任务进入作业队列时,当前正在执行的低优先级任务将被抢占,并且更高优先级的任务将在其自己的时间间隔内执行。但在此实施过程中还有另一个逻辑,因此优先级较低的任务不会在很长一段时间内挨饿。

  2. 使用缓冲区/后备存储在作业队列中使用另一个任务交换任务,具体取决于每个任务的指定时间限制。如果当前正在运行的任务剩余时间较少,则应该运行它直到完成。否则,它可以与具有最小时间上限的传入任务交换。

答案 1 :(得分:0)

听起来你真的不想使用计划机制,而是使用作业队列。作业完成后,您将开始队列中的下一个作业。如果队列为空,则空闲直到有要运行的作业。如果您有多个CPU核心,或者并行运行作业还有其他好处,您可以使用计数器来了解当前正在运行的作业数。