0

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

简单的解决方案是将其安排在当前时间。在这种情况下,可能会发生这样的情况,已经有太多待处理的任务,导致任务执行滞后。所以,我们需要把它放在未来,这样任务执行的延迟就不是问题了。同时,我确实有一个时间上限,它指定新任务必须在指定的期限内执行。

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

i) 任务没有太多滞后。

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

假设所有任务具有相同的优先级和相同的截止时间值来满足。因此遵循先到先得的技术。

4

2 回答 2

1

解决方案:

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

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

于 2013-06-07T05:13:48.537 回答
0

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

于 2013-06-07T06:07:44.000 回答