Skip to content

面试速答(先看这里)

**一句话结论:**顾名思义,就是谁先来谁就有限获得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 系统