步骤 4 / 7
调度:选下一个上场的程序
调度器从“准备好运行”的程序里挑一个。
在等键盘、等网络的程序先跳过,只看准备好运行的。 Linux 的 CFS 会挑“目前用 CPU 最少”的那个,力求公平;6.6 版起换成 EEVDF,在公平之外更照顾需要快速响应的任务。 用 nice 调整优先级,就是在影响这个选择。
操作系统
一个 CPU 核心同一时刻只能跑一个程序,Linux 靠快速轮换制造“同时运行”的效果。
以一个 CPU 核心上轮流运行两个程序为例。
步骤 4 / 7
调度器从“准备好运行”的程序里挑一个。
在等键盘、等网络的程序先跳过,只看准备好运行的。 Linux 的 CFS 会挑“目前用 CPU 最少”的那个,力求公平;6.6 版起换成 EEVDF,在公平之外更照顾需要快速响应的任务。 用 nice 调整优先级,就是在影响这个选择。
| 当前状态 | 发生了什么 |
|---|---|
| A 运行中 | 程序 A 正在使用 CPU |
| 进入内核态 | 时钟到点,CPU 陷入内核 |
| 内核态 | 保存程序 A 的上下文 |
| 内核态 | 调度器选中程序 B |