了解机器调度

时间:2014-03-27 06:59:39

标签: data-structures heap priority-queue

我目前正在学习数据结构课程中的优先级队列和堆栈以及所有这些内容以及类功能点中有一小部分介绍了机器调度,而且我很难理解什么正在继续。

首先举一个例子:

m 相同的机器

n 要执行的工作/任务

将作业分配给计算机,以便最后一个作业完成的时间最小。 - >这最后一部分的措辞让我觉得......斜体到底是什么部分意思是?有人可以用不同的方式说出来吗?

继续举例说: 3台机器和7个工作

工作时间为[6,2,3,5,10,7,14]

可能的时间表,然后是这张图片:

enter image description here

(通过按照它们在给定作业列表中出现的顺序(从左到右)安排作业来构建示例计划;每个作业都安排在最早完成的计算机上。 )

结束时间= 21

目标:查找完成时间最短的时间表

而且我真的不明白发生了什么。我不明白正在完成什么,或者他们如何用工作和不同的时间想出那张小照片......有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

"上一个工作完成的时间最短" ="所有工作完成的时间",如果有帮助的话。

在你的例子中,这发生在时间= 21。显然,在那之后没有工作仍在运行,并且所有工作都已安排(即你不能安排工作并说出最短时间是时间= 0)。

解释这个例子:

给定的工作是工作的持续时间。持续时间为6的作业首先被安排 - 因为在机器A,B或C上安排它将最终完成它在时间6完成,这并不重要,所以我们只是在机器A上安排它。然后计划持续时间为2的工作。类似地,它可以继续使用B或C(如果是A,它将在时间8完成,因此不符合我们的算法),我们将其安排在B上。然后是持续时间的工作预定3。机器A,B和C的相应结束时间分别为9,5和3,因此我们将其安排在机器C上。依此类推。

虽然给定的算法不是我们能做到的最好的算法(但也许有一些强制执行命令的东西,尽管这没有太多意义)。一个更好的任务:

                14 16
A |      14      |2|
             10    16
B |    10    |  6  |
          7  10   15
C |   7   | 3|  5 |

此处所有工作都在时间= 16完成。

我已经列出了为插槽本身的每个插槽选择的实际工作,希望能够更好地解释它可能清除任何剩余的混淆(例如,在机器A上,您可以看到持续时间为14的作业预定了2个,结束于时间16)。

我确定给定的算法只是对问题的介绍,并且您将很快得到最好的结果。

尝试尽快完成所有工作的目标是什么:例如,想想拥有多个核心的计算机。您希望任务尽快完成的原因有很多。也许你正在玩一个游戏,你有一堆任务可以解决发生的事情(可能有一个任务分配给每个单位/几个单位来确定它的作用)。你只能在所有任务完成后显示,所以如果你不尽快完成,你就会不必要地让游戏变慢。