algorithm - 了解最短作业优先算法(非抢占式)

标签 algorithm scheduling job-scheduling

最短作业优先算法如下图所示:

SJF

如果是最短的工作优先/最短的流程接下来,顺序不应该是: P1 → P5 → P3 → P4 → P2 ?因为这是从最低到最高服务时间的顺序。
为什么进程2排在第二位?

我知道如果我们改用突发时间,顺序就是这样,但我不知道服务时间和突发时间之间的区别是什么。

任何帮助解释该图形将不胜感激。

最佳答案

问题中的图像遵循正确的顺序是:

P1 → P2 → P5 → P3 → P4

解释:
P1 到达 time = 0 ,所以它会先执行。此进程的服务时间为 3。所以这个过程在time=3时完成。

time=3,只有一个进程到达,即P2。所有其他进程稍后到达。所以现在执行这个过程。该进程的服务时间为6,因此该进程在time=3+6=9完成。

现在time=9,有3个进程,分别是P3P4P5(其中分别在 time= 4、6 和 8 到达)。由于P5的服务时间是2,与P3P4相比是最小的,所以P5 现已执行,并在 time=9+2=11 完成。

time=11,我们有两个进程P3P4(分别在time=4 和6)。由于P3的服务时间是4,比P4少,所以执行P4现在,它在 time= 11+4=15

完成

time=15,我们只有一个进程P4。所以现在执行了。由于此进程的服务时间为 5,因此它在 time = 15+5 = 20

完成

关于algorithm - 了解最短作业优先算法(非抢占式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42514363/

相关文章:

algorithm - 二叉树验证

java - 如何在 Google App Engine 中实现 "scheduling"

python - Azure批量作业调度: Task doesn't run recurrently

hadoop - 我应该使用 LSF 还是实现我自己的作业调度程序?

database - 在 Firestore 中查询没有双子的不同顺序的元素

python - 优化算法以找到渐进学习曲线

python - Python 上的 Bolzano 算法

java - 使用 Java 中的 Cron 表达式查找上次触发时间

java - 在特定时间执行java代码

algorithm - 工作排序贪婪解决方案的最优性证明