如果两个作业的优先级相同,第二个作业会等到第一个作业完成吗?

如果两个作业的优先级相同,第二个作业会等到第一个作业完成吗?

假设一个系统有一个 CPU。

如果两个作业开始的时间不同,但优先级相同(20,20),那么晚开始的作业会等到先开始的作业完成吗?

你能帮我了解这一点吗?

先感谢您。

抱歉我的英语不好。

答案1

这是关于分时工作原理的一个非常基本的解释:

有(非常短的)时间片,在此时间片之后,正在运行的作业必须放弃 CPU,让位于其他等待的准备运行的作业。这是为了保证即使作业是纯计算作业,它也不会永远阻塞 CPU。当作业被迫离开 CPU 并且仍有工作要做时,它会被放回到“准备运行”作业队列中与其优先级相对应的位置。

如果某项作业必须等待(例如从内存读取或执行 I/O - 与 CPU 速度相比,这非常慢),它也会放弃 CPU,直到 I/O 完成后被中断唤醒。然后它将再次被放入“准备运行”作业队列中。

即使在单核/单线程系统上它也有效。

因此从外部看,两个作业将轮流在 CPU 上运行,并且似乎同时运行。

这种行为对于公平性非常重要:想象一下,一项工作进行无休止的计算(计算所有不超过 10^10 的素数),而第二项工作只想等到echo hello第一项工作完成。

相关内容