主题
面试速答(先看这里)
**一句话结论:**顾名思义,就是谁先来谁就有限获得CPU资源, 类似排队买票 ,先来的进程先执行,后来的进程要等前面的执行完。
60秒标准回答:
在操作系统中,进程调度算法决定了 CPU 如何分配时间片给不同的进程
常见的调度算法有以下几个
顾名思义,就是谁先来谁就有限获得CPU资源, 类似排队买票 ,先来的进程先执行,后来的进程要等前面的执行完
**答题顺序:**结论 → 原理/机制 → 关键流程 → 场景与取舍 → 易错点
回答主线:
- **先来先服务(FCFS, First Come First Served):**顾名思义,就是谁先来谁就有限获得CPU资源, 类似排队买票 ,先来的进程先执行,后来的进程要等前面的执行完。
- **短作业优先(SJF, Shortest Job First):**顾名思义,就短谁优先。
- **优先级调度(Priority Scheduling):**为每个进程分配优先级,优先调度高优先级进程。
- **时间片轮转(RR, Round Robin):**这个简单,就是每个进程分配固定时间片(如 100ms),时间片用完则抢占并放入队列尾部,循环执行。
- **多级反馈队列(MLFQ, Multi-Level Feedback Queue):**进程根据执行时间和优先级被分配到不同队列, 新进程进入最高优先级队列(时间片短),若进程用完时间片未结束,则降级到低优先级队列(时间片变长)。
**记忆锚点:**CPU → First → vruntime → 多级反馈队列 → Linux → MLFQ
关键取舍:
- 常见的调度算法有以下几个: 先来先服务(FCFS, First Come First Served) 顾名思义,就是谁先来谁就有限获得CPU资源, 类似排队买票 ,先来的进程先执行,后来的进程要等前面的执行完。
- 分为非抢占式(进程一旦被选中,就会执行完)和抢占式(如果有更短的进程到来,会打断当前进程) 优点是可以最小化平均等待时间和周转时间(理论上最优)。
- 优点是可以兼顾短任务和长任务,提高系统响应速度。
加分表达:
- 优点就是如果某些任务真的很重要,可以给他加权,让他更快执行。
- 唯一的缺点就是实现复杂度高,难以实现和优化。
追问准备:
- 围绕「CPU」:底层原理是什么?使用时有哪些边界和常见坑?
- 围绕「First」:底层原理是什么?使用时有哪些边界和常见坑?
- 围绕「vruntime」:底层原理是什么?使用时有哪些边界和常见坑?
- 如果线上出现异常,你会如何定位、验证并规避?
典型回答
在操作系统中,进程调度算法决定了 CPU 如何分配时间片给不同的进程。
📄 ✅什么是时间片
常见的调度算法有以下几个:
先来先服务(FCFS, First Come First Served)
顾名思义,就是谁先来谁就有限获得CPU资源,类似排队买票,先来的进程先执行,后来的进程要等前面的执行完。
这个算法的优点就是公平,先来后到。缺点就是可能存在“长进程”影响后续进程,形成“短进程饥饿”现象。
短作业优先(SJF, Shortest Job First)
顾名思义,就短谁优先。分为非抢占式(进程一旦被选中,就会执行完)和抢占式(如果有更短的进程到来,会打断当前进程)
优点是可以最小化平均等待时间和周转时间(理论上最优)。缺点就是如何准确的预测谁的执行时间更短呢?另外就是长任务可能就一直拿不到时间片了。
优先级调度(Priority Scheduling)
为每个进程分配优先级,优先调度高优先级进程。同样分为抢占式和非抢占式。
优点就是如果某些任务真的很重要,可以给他加权,让他更快执行。缺点就是有些优先级低的进程可能就拿不到时间片了。
时间片轮转(RR, Round Robin)
这个简单,就是每个进程分配固定时间片(如 100ms),时间片用完则抢占并放入队列尾部,循环执行。
优点就是也挺公平的,大家顺序来,每个进程都能执行到,不会出现饥饿的情况,但是可能会导致CPU时间片的频繁切换。导致额外的消耗。
多级反馈队列(MLFQ, Multi-Level Feedback Queue)
进程根据执行时间和优先级被分配到不同队列,新进程进入最高优先级队列(时间片短),若进程用完时间片未结束,则降级到低优先级队列(时间片变长)。低优先级队列长时间未运行可升级优先级(防止饥饿)。
优点是可以兼顾短任务和长任务,提高系统响应速度。还能防止饥饿问题。唯一的缺点就是实现复杂度高,难以实现和优化。
完全公平调度(CFS, Completely Fair Scheduler)
基于虚拟运行时间(vruntime)分配 CPU,确保所有进程按权重公平获得执行时间。使用红黑树(Red-Black Tree)快速选择最小 vruntime 的进程。(现代 Linux 系统的默认调度器。)
优点是高公平性,低延迟,适合多任务混合负载。缺点是对实时任务支持需额外配置(如配合实时调度类)。
| 算法 | 抢占性 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| FCFS | 非抢占 | 简单、公平 | 短进程饥饿 | 早期批处理系统 |
| SJF/SRTF | 非抢占/抢占 | 理论最优平均等待时间 | 依赖预知时间,长作业饥饿 | 已知时长的批处理任务 |
| RR | 抢占 | 公平,响应快 | 上下文切换开销 | 交互式系统(如分时 OS) |
| 优先级调度 | 可选抢占 | 灵活定制优先级 | 低优先级进程饥饿 | 实时系统 |
| 多级反馈队列(MLFQ) | 抢占 | 自适应,平衡长短作业 | 实现复杂 | 通用操作系统 |
| CFS | 抢占 | 高公平性,低延迟 | 实时任务需额外配置 | 现代 Linux 系统 |