【发布时间】:2023-03-19 00:38:01
【问题描述】:
我正在尝试模拟 Max-Min 和 Min-Min 调度算法,并在模拟中自己编写代码。但并不真正了解如何在代码中实现它们的工作方式。
例如,在 FCFS 算法中,我使用 3 个服务器(vms),每个服务器都比另一个服务器快,并且有 5 个到达时间不同的任务。因此,第一个任务将检查第一个服务器并安排在那里,如果第二个任务到达而第一个尚未完成,将检查可用性并安排到第二个服务器。如果所有 3 台服务器都被占用,则下一个任务将被安排到剩余执行时间最短的那个。
现在对于 Min-Min 和 Min-Max,这是理论背景:
最小-最小: 阶段 1:首先计算每台机器上每项任务的完成时间,然后为每项任务选择以尽可能短的时间处理任务的机器。 阶段 2:在 Meta task 的所有任务中,选择完成时间最短的任务,并分配给期望执行时间最短的机器。该任务从 Meta Task 列表中删除,并继续执行该过程,直到 Meta Task 列表为空。
最大-最小: 阶段 1:首先计算每台机器上每项任务的完成时间,然后为每项任务选择在最短可能时间内处理任务的机器 阶段 2:在 Meta Task 的所有任务中,选择完成时间最长的任务并分配给机器。该任务从 Meta Task 列表中删除,并继续执行该过程,直到 Meta Task 列表为空。
我得到了两种算法的第一阶段,我需要检查任务的突发时间和服务器的加速 -> 突发/加速 = 执行时间。我会为每项任务找到最好的服务器。 但我无法理解第 2 阶段。对于 Min-Min,我必须每次选择最快的任务,当我找到它时,我必须将其安排到更快的服务器上。但是工作量会不平衡,正如我所说的 3 台服务器,至少一台速度更快,假设 ID 为 1 的服务器,所以每次将任务安排到这台服务器时,我还需要另外 2 台工作。
Max-Min 也有同样的问题,找到最差的任务,把它安排到最差的服务器上,但是只有一台服务器是最差的,所以另外两台不能工作。我应该如何进行平衡并考虑到任务在不同的时间到达?
如果您需要更多信息,请提前告诉我并感谢您!
【问题讨论】:
标签: algorithm scheduling jobs