Linux 操作系统在运行的进程之间切换以实现多任务处理。
使用什么算法来确定何时暂停当前正在运行的进程的执行以及接下来应该运行哪个进程?
答案1
在较新的内核中,使用完全公平调度程序(它取代了旧内核的 O(1) 调度程序)。
CFS将计划任务存储在红黑树中,并以进程运行所花费的CPU时间量作为键。这允许调度程序有效地选择运行时间最少的进程(存储在树的左模式节点中)。
一旦任务即将运行,它就会从树中删除,然后当它运行时,会使用新使用的 CPU 时间重新添加它。
长时间“睡眠”的进程将自动获得优先级提升,因为它们没有花费大量的 CPU 时间。
因此,这是“公平的”,因为正在睡眠的进程与持续运行的进程获得同样多的 CPU 时间