首页/操作系统/02-process/优先级调度算法 🔗 在 Obsidian 中打开
操作系统 · 02-process

优先级调度算法

重要度 ★★★★ 优先级调度静态优先级动态优先级老化
速查
优先级调度为每个进程分配优先级,优先选择优先级最高的就绪进程执行。分为非抢占式与抢占式、静态与动态优先级;低优先级进程可能饥饿,用老化(Aging)缓解。注意:数值越小优先级越高(Linux 0–127)。

速查

项目
定义每个进程分配优先级,优先级高的先执行
分类非抢占式 / 抢占式;静态 / 动态
优先级范围0–127(Linux),值越小优先级越高
主要问题低优先级进程饥饿
解决方案老化(Aging)——随等待时间提高优先级

核心概念

优先级调度算法为每个进程分配一个优先级,调度时选择优先级最高的就绪进程执行。

分类

  • 非抢占式:进程运行到完成或因阻塞让出 CPU 后,才重新选择优先级最高的就绪进程。
  • 抢占式:新进程到达时,若其优先级高于当前运行进程,则立即抢占 CPU。

优先级确定方式

  • 静态优先级:创建时确定,运行中不变。简单但不灵活。
  • 动态优先级:运行中根据进程行为动态调整,如等待时间越长,优先级越高

优先级来源

  • 进程类型(系统进程 > 用户进程)
  • 资源需求(需求越少优先级越高)
  • 等待时间(等待越久优先级越高,防饥饿)
  • I/O 密集型进程优先级通常较高(提高系统整体吞吐量)
饥饿问题 低优先级进程可能长期得不到执行。解决方案是老化(Aging)——随等待时间增加,逐步提高其优先级,直到它被调度。

关键性质

对比项静态优先级动态优先级
确定时机创建时确定运行中动态调整
灵活性
实现难度简单复杂
能否防饥饿不能(需配合老化)能(自身随等待提升)
代表批处理系统的作业优先级UNIX / Linux 的进程优先级

常见考法

考法解题套路
优先级排序按优先级从高到低选择就绪进程(注意数值小=优先级高)
抢占式判断新进程优先级是否高于当前运行进程
饥饿问题低优先级进程饥饿,用老化技术解决
动态优先级调整等待时间增加 → 优先级提高(防饥饿)
SJF 与优先级SJF 是以执行时间倒数为优先级的特例

易错点

注意
  • 优先级数值越,优先级越(Linux 0–127,0 最高)
  • SJF 本质上是一种特殊的优先级调度——以执行时间的倒数作为优先级
  • 静态优先级不能防止饥饿,必须配合老化技术
  • 抢占式优先级调度中,新到达的高优先级进程会立即抢占 CPU
  • I/O 密集型进程通常设较高优先级(频繁让出 CPU,提高并发度)

核心结论

必背
  1. 优先级调度是最通用的调度框架,SJF、RR 等都是其特殊情况
  2. 静态优先级简单但不灵活,动态优先级灵活但实现复杂
  3. 抢占式优先级调度响应性好,非抢占式实现简单
  4. 老化技术通过逐步提高等待进程的优先级来解决饥饿问题
  5. SJF 可看作以执行时间倒数为优先级的优先级调度

记忆卡片

优先级调度的核心思想?
为每个进程分配优先级,选择优先级最高的就绪进程执行。
什么是老化技术?
随等待时间增加逐步提高进程优先级,防止低优先级进程饥饿。
静态与动态优先级区别?
静态创建时确定不变,动态运行中按行为调整。
SJF 与优先级调度关系?
SJF 是以执行时间倒数为优先级的特殊优先级调度。
哪种进程设较高优先级?
I/O 密集型进程(频繁让出 CPU,提高系统并发与吞吐)。

交互动画 · 就绪队列与老化

就绪队列(按优先级升序,值越小越优先) CPU 空闲
点击「运行最高优先级」查看谁先上 CPU;「时间推进」模拟老化让低优先级进程升上来
数值越小优先级越高;老化把等待进程的优先级值逐步减小

相关知识点

scheduling-algorithm-comparison sjf-scheduling

↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。