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 - 我对什么是巨大的查询感到困惑?

c++ - 有效地将 16 位整数哈希到 256 位空间

c++ - OpenMP 动态与引导式调度

airflow - 如何使用 Airflow 检查长时间运行的 http 任务的状态?

java - 使用 JDBC JobStore 的 Quartz 调度器

php - 什么是 "MySQL event"?

java - 我的选择算法有什么问题?

algorithm - N 嵌套 for 循环

sql - 如何每天在 Azure 数据库上运行 T-SQL 查询

linux - 调度算法如何确定进程类型(I/O,CPU bound)