Linux操作系统在运行进程之间切换以启用多任务处理.
使用什么算法来确定何时暂停当前正在运行的进程的执行以及下一个应该运行的进程?
解决方法:
在较新的内核中,使用了Completely Fair Scheduler(它取代了旧内核的O(1)调度程序).
CFS将计划任务存储在红黑树中,并使用已用尽的CPU时间量作为密钥运行.这允许调度程序有效地选择具有最少运行时间(其存储在树的左模式节点中)的进程.
一旦即将运行任务,它将从树中删除,然后在运行时,将使用新的CPU时间重新添加该任务.
长时间“休眠”的进程将自动获得优先级提升,因为它们没有大量的CPU时间.
因此,它是“公平的”,因为正在休眠的进程获得的CPU时间与持续运行的进程一样多