Linux内核设计与实现中讲到:vruntime记录了进程的运行了多少时间以及它还因该运行多久;cfs需要选择下一个运行的进程的时候,它总是挑一个具有最小vruntime的进程。
我想问,两个具有相同优先级的进程,一个先运行,一个后运行,那先运行的进程的vruntime不是会比后运行的进程的vruntime大?那后运行的进程不是总被调度,直到它的vruntime与先运行的进程的vruntime相当?
Linux内核设计与实现中讲到:vruntime记录了进程的运行了多少时间以及它还因该运行多久;cfs需要选择下一个运行的进程的时候,它总是挑一个具有最小vruntime的进程。
我想问,两个具有相同优先级的进程,一个先运行,一个后运行,那先运行的进程的vruntime不是会比后运行的进程的vruntime大?那后运行的进程不是总被调度,直到它的vruntime与先运行的进程的vruntime相当?
新创建进程的vruntime初始化为处理器可运行队列所有进程的最小vruntime(每个处理器都维护一个min_vruntime字段),这样可以防止老进程被饿死(如果新进程vruntime置为0的话)