我目前正在尝试理解完全公平调度(CFS)并偶然发现了一些我无法理解的东西。我们举个例子:
- 我有一个进程在后台运行(例如跟踪某些内容)。它的优先级为0。
- 1 小时后,我开始具有相同优先级的第二个进程。
我的问题是第一个进程如何在秒初始化后获得执行的机会?假设第一个提到的进程min_vruntime
当时不存在。我认为在这种情况下,vruntime
第二个过程的 总是低于vruntime
第一个过程的。由于两者具有相同的优先级,我认为进程 2 总是排在 RB 树中第一个进程的前面。
显然不能那样工作,不是吗?那么我错过了什么?