Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 在不久的将来安排任务_Algorithm_Job Scheduling - Fatal编程技术网

Algorithm 在不久的将来安排任务

Algorithm 在不久的将来安排任务,algorithm,job-scheduling,Algorithm,Job Scheduling,问题是如何安排任务。假设在任何时候都有新任务出现,并且需要在将来解决。此外,我们没有关于其他任务计划的确切时间的信息,但我们知道在接下来的x小时计划的任务数量 简单的解决方案是,为当前时间安排它。在这种情况下,可能已经有太多的挂起任务,导致任务的执行滞后。因此,我们需要把它放在未来,这样任务执行的滞后就不会成为问题。同时,我也有一个时间上限,它规定新任务必须在指定的截止日期内执行 因此,简而言之,问题是,我们应该如何安排即将到来的新任务,以便- i) 这项任务没有太多的延迟 ii)在规定期限内完

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

简单的解决方案是,为当前时间安排它。在这种情况下,可能已经有太多的挂起任务,导致任务的执行滞后。因此,我们需要把它放在未来,这样任务执行的滞后就不会成为问题。同时,我也有一个时间上限,它规定新任务必须在指定的截止日期内执行

因此,简而言之,问题是,我们应该如何安排即将到来的新任务,以便-

i) 这项任务没有太多的延迟

ii)在规定期限内完成任务

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

解决方案:

  • 为每个任务指定优先级。每当具有更高优先级的任务进入作业队列时,当前正在执行的低优先级任务将被抢占,高优先级任务将在其自己的时间间隔内执行。但是在这个实现过程中还有另一个逻辑,这样低优先级的任务在很长一段时间内不会被饿死

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


  • 听起来您确实不想使用调度机制,而是想使用作业队列。作业完成后,您将启动队列中的下一个作业。如果队列为空,则在有作业要运行之前,您将处于空闲状态。如果您有多个CPU内核,或者并行运行作业还有其他好处,则可以使用计数器了解当前正在运行的作业数量。

    假设所有任务都具有相同的优先级和相同的截止日期。因此,需要先到先得的方法。但问题是对于新任务,我们需要在这样的时间点安排,这样就不会出现已经有太多的任务在运行从而导致延迟的情况,但同时满足最后期限并及时选择。新任务可以被分配比剩余任务更高的优先级。调度程序将自动拾取该任务并将其放在作业队列的前面。假设队列从未变为空,导致新任务从未拾取。这将导致超出任务的最后期限。