CPU 调度
CPU 调度(CPU Scheduling)是操作系统进程管理的核心机制——在内存中的多个就绪进程之间分配 CPU,决定"谁先运行、运行多久"。一台机器只有少数几个 CPU 核,却要同时跑几十上百个进程,调度器(scheduler)负责从就绪队列里挑选下一个占用 CPU 的进程,分发器(dispatcher)负责完成上下文切换把 CPU 控制权交过去。调度的目标是公平(每个进程都能得到 CPU)、高吞吐(单位时间完成更多作业)、快响应(交互用户不卡顿)、低周转(作业从提交到完成的总时间短)——这些目标往往相互冲突,没有"完美"算法,只有"针对场景权衡"的算法。
调度算法是面试与 OS 考试的高频考点。基本算法有五种:FCFS(先来先服务)简单公平但有护航效应(短作业被长作业拖死);SJF(短作业优先)平均等待时间最优但会饥饿长作业;RR(轮转)用固定时间片轮流服务、交互响应好但时间片太小时切换开销大;优先级调度按优先级选进程、低优先级会饥饿(需老化 aging 定期提升优先级解决);MLFQ(多级反馈队列)综合前三者、动态在多队列间调整进程、是现代通用 OS(Linux CFS/Windows/macOS)的鼻祖。要会画甘特图、算平均等待时间/周转时间/响应时间——这是计算题的固定套路。本叶聚焦调度算法原理、性能指标与计算,是理解多任务并发性能的根基。
评价
优点
- 多任务假象:通过快速切换(毫秒级时间片)让多个进程"同时"运行,用户感觉独占 CPU
- 公平共享:调度算法(尤其 RR/MLFQ)保证每个就绪进程都能定期获得 CPU,无进程被无限搁置(有老化机制时)
- 场景适配:批处理用 FCFS/SJF 求吞吐,交互式用 RR/MLFQ 求响应,实时用优先级保证截止时间——可按场景选算法
- 优先级保障:优先级调度能让关键任务(如系统进程、实时任务)优先获得 CPU,保证重要工作及时完成
缺点
- 上下文切换开销:每次切换要保存/恢复寄存器、刷 TLB、CPU 流水线冲刷——时间片太小的 RR 开销惊人(切换占 CPU 时间)
- 目标冲突:公平与吞吐、响应与周转往往不可兼得——SJF 最优平均等待但饿死长作业,FCFS 公平但有护航效应
- 饥饿风险:SJF/优先级调度可能让低优先级或长作业永远等不到 CPU,需引入老化机制缓解
- 复杂度高:MLFQ 等高级算法参数多(队列数/时间片/优先级调整规则),调优困难,且不可预测(同一程序每次运行时序不同)
本叶地图
- 入门 —— CPU/IO 密集型、调度目标、抢占式 vs 非抢占式、调度器与分发器、五种算法速览
- 调度算法详解 —— FCFS/SJF/RR/优先级/MLFQ 的原理、优缺点、适用场景与护航效应/饥饿/老化
- 调度性能指标与计算 —— 甘特图、平均等待/周转/响应时间计算、时间片大小对 RR 影响、饥饿与老化机制
- 参考 —— 算法对比大表、复杂度、计算模板、易错点、权威链接