Linux 进程调度(Process Scheduling) 是指 Linux 内核决定哪个进程在什么时候、使用哪个 CPU 核心运行 的机制。它的核心目标是:公平、高效、及时地分配 CPU 时间。
下面从几个层面给你讲清楚。
计算机通常 CPU 数量远少于进程数量,比如:
所以需要:
Linux 中常见进程状态:
只有 可运行进程 才会参与调度。
保存当前进程状态(寄存器、程序计数器等),加载下一个进程状态。
目前主流(2.6.23+)
nice 值(-20 ~ 19)nice 越小 → 权重越大 → 获得 CPU 越多vruntime 排序Linux 支持多种调度策略:
| 调度类 | 说明 |
|---|---|
SCHED_NORMAL |
普通进程(CFS) |
SCHED_BATCH |
批处理 |
SCHED_IDLE |
极低优先级 |
SCHED_FIFO |
实时,先到先运行 |
SCHED_RR |
实时,轮转 |
sleep、read)# 查看进程调度策略
ps -eo pid,comm,pri,ni,stat
# 修改进程优先级
nice -n -5 ./app
renice -n 5 -p 1234
Linux 进程调度就是内核按照调度策略,在多个进程中公平、实时、高效地分配 CPU 使用权的机制,现代 Linux 主要使用 CFS 调度器。
如果你愿意,我也可以讲:
你想深入哪一块?