Crispy13 Asked: 2019-04-05 06:03:33 +0800 CST2019-04-05 06:03:33 +0800 CST 2019-04-05 06:03:33 +0800 CST 如果两个作业的优先级相同,第二个作业会等到第一个作业完成吗? 772 让我假设一个系统有一个 cpu。 如果 2 个作业在不同的时间开始但优先级相同(20、20),那么比另一个更晚开始的作业会等到较早的作业完成? 你能帮我知道这个吗? 先感谢您。 Ps 对不起我的英语不好。 cpu process-priority 1 个回答 Voted Best Answer muclux 2019-04-05T07:44:30+08:002019-04-05T07:44:30+08:00 这是对时间共享如何工作的非常基本的解释: 有(非常短的)时间片,在此之后,正在运行的作业必须放弃 CPU 以让位于其他准备运行的等待作业。这是为了保证即使一个作业是纯粹的计算作业,也不能永远阻塞 CPU。当作业被迫离开 CPU 并且仍有工作要做时,它会被放回“准备运行”作业队列中与其优先级相对应的位置。 如果作业必须等待(例如从内存读取或执行 I/O - 这与 CPU 的速度相比非常慢),它也会放弃 CPU,直到当 I/ O 完成。然后它将再次放入“准备运行”作业的队列中。 这甚至适用于单核/单线程系统。 因此,从外部看,两个作业将轮流在 CPU 上运行,并且似乎同时运行。 这种行为对于公平来说非常重要:想象一个工作进行无休止的计算(计算所有素数直到 10^10),而第二个工作只echo hello需要等到第一个工作完成。
这是对时间共享如何工作的非常基本的解释:
有(非常短的)时间片,在此之后,正在运行的作业必须放弃 CPU 以让位于其他准备运行的等待作业。这是为了保证即使一个作业是纯粹的计算作业,也不能永远阻塞 CPU。当作业被迫离开 CPU 并且仍有工作要做时,它会被放回“准备运行”作业队列中与其优先级相对应的位置。
如果作业必须等待(例如从内存读取或执行 I/O - 这与 CPU 的速度相比非常慢),它也会放弃 CPU,直到当 I/ O 完成。然后它将再次放入“准备运行”作业的队列中。
这甚至适用于单核/单线程系统。
因此,从外部看,两个作业将轮流在 CPU 上运行,并且似乎同时运行。
这种行为对于公平来说非常重要:想象一个工作进行无休止的计算(计算所有素数直到 10^10),而第二个工作只
echo hello
需要等到第一个工作完成。