5分钟搞懂进程调度算法:从“先来先服务“到“多级反馈队列“,这一篇全讲透了(建议收藏)
如果你正在准备操作系统考试或面试,进程调度算法绝对是绕不开的高频考点。FCFS、SJF、HRRN、RR、MFQ……名字一个比一个拗口,区别一个比一个微妙。很多同学背了忘、忘了背,就是因为没有理解它们之间的演进逻辑——其实这六种算法是一环扣一环、逐步"打补丁"进化而来的。本文用最直白的方式,带你顺着这条进化链,一口气把它们全部拿下。
演进过程

汇总表:
| 算法 | 解决问题 | 新问题 |
|---|---|---|
| FCFS | 最简单公平 | 短作业等长作业 |
| SJF | 优待短作业 | 长作业饿死 |
| HRRN | 兼顾长短 | 现实难实现 |
| RR | 公平轮转 | 无优先级 |
| HPF | 有优先级 | 低优先级饿死 |
| MFQ | 综合前几种 | — |
先来先服务调度算法

定义:每次从就绪队里选择最先进入队列的进程,然后一直运行,指导进程退出或被阻塞,才会继续从队列中选择第一个进程接着运行。
优点:最简单公平
缺点:当一个长作业先运行,后面的短作业等待的时间就会很长,不利于短作业。
最短作业优先调度算法

定义:优先选择时间最短的进程来运行。
优点:提高系统吞吐量。
缺点:长作业不会被运行。
高响应比优先算法

定义:每次进行进程调度时,先计算响应比优先级,然后把响应比优先级最高的进程投入运行。
优点:兼顾长短作业,避免饥饿,吞吐量和响应时间相对均衡。
缺点:理想算法需要预知要求服务时间,实际不可准确预估。
时间片轮转调度算法

定义:每个进程被分配一个时间段,称为时间片,即允许进程在该时间段中运行。
优点:公平、响应好、实现简单、不会被饿死。
缺点:时间片难调(通常20ms-50ms)、无优先级。
多级反馈队列调度算法

定义:时间片轮转+最高优先级的综合。设置多个就绪队列,优先级从高到低,时间片从短到长;新进程进最高优先级队列末尾,时间片用完降到下一级;只调度更高优先级队列为空时的低优先级队列;高优先级有新进程来到时,可抢占当前进程。
可以把它想成银行叫号:
开了好几个窗口队列,VIP 窗口时间短、叫得快,普通窗口时间长、轮得慢
新客户先去最高优先级队列排队
时间片内办完就走;办不完就降到下一级队列,下次给你更长办理时间
高优先级有人时,低优先级先别动;中间突然来了高优先级客户,正在办的要让位
总结:回顾整条进化路线,你会发现进程调度算法的设计本质上是在做一场永不停歇的权衡——公平 vs 效率、短作业 vs 长作业、实现简单 vs 效果理想。FCFS 够简单但短作业遭殃,SJF 偏爱短作业却可能饿死长作业,HRRN 用公式巧妙平衡了两者,RR 把 CPU 切成时间片实现公平轮转,而 MFQ 则博采众长,成了现代操作系统的实际选择。下次再遇到调度算法的题目,别死记硬背了,顺着这条"解决问题 → 产生新问题 → 继续优化"的进化链去理解,整张表自然就印在脑子里了。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)