文章目录
操作系统中的任务调度算法是决定如何分配CPU时间给不同进程的机制。任务调度的目的是保证系统高效、合理地运行,不同的调度算法适用于不同的需求和场景。以下是一些常见的任务调度算法:
1. 先来先服务(FCFS, First-Come-First-Served)
- 核心思想:按任务到达顺序执行,先到先执行。
- 特点:
- 非抢占式调度。
- 简单易实现,公平性高。
- 缺点:
- 护航效应(Convoy Effect):短任务可能因长任务长时间等待。
- 平均等待时间较长。
- 适用场景:批处理系统,简单任务队列。
2. 短作业优先(SJF, Shortest Job First)
- 核心思想:优先执行运行时间最短的任务。
- 类型:
- 非抢占式(SJF):任务开始后不可中断。
- 抢占式(SRTF, Shortest Remaining Time First):允许新到达的短任务抢占当前任务。
- 优点:
- 最小化平均等待时间。
- 缺点:
- 需要预知任务执行时间(不现实)。
- 可能导致长任务饥饿(Starvation)。
- 适用场景:批处理系统,已知任务执行时间的场景。
3. 优先级调度(Priority Scheduling)
- 核心思想:为任务分配优先级,按优先级高低执行。
- 类型:
- 静态优先级:优先级在任务创建时确定。
- 动态优先级:优先级根据任务行为动态调整(如等待时间增加)。
- 抢占式或非抢占式。
- 优点:灵活性高,适合实时系统。
- 缺点:
- 低优先级任务可能长期饥饿。
- 优先级反转问题(需通过优先级继承解决)。
- 适用场景:实时系统、关键任务处理。
4. 时间片轮转(RR, Round Robin)
- 核心思想:每个任务分配固定时间片(Time Quantum),轮流执行。
- 特点:
- 抢占式调度,时间片用完强制切换。
- 响应时间短,适合交互式系统。
- 关键参数:
- 时间片大小:过长退化为FCFS;过短导致频繁上下文切换。
- 优点:公平性高,无饥饿。
- 缺点:平均等待时间较长。
- 适用场景:分时系统(如Linux默认调度策略)。
5. 高响应比优先(HRRN, Highest Response Ratio Next)
- 核心思想:动态计算响应比,优先执行响应比高的任务。
- 响应比公式:
响应比 = (等待时间 + 预估执行时间) / 预估执行时间
- 响应比公式:
- 特点:
- 非抢占式,平衡等待时间和执行时间。
- 避免长任务饥饿。
- 优点:兼顾公平性和效率。
- 缺点:需预估执行时间。
- 适用场景:批处理与交互式混合系统。
6. 多级队列调度(Multilevel Queue Scheduling)
- 核心思想:将任务分为多个队列(如前台交互任务、后台批处理任务),每个队列使用不同调度策略。
- 特点:
- 队列间可设置优先级(如前台任务优先)。
- 队列内部独立调度(如前台用RR,后台用FCFS)。
- 优点:分类管理,灵活性强。
- 缺点:队列划分和优先级策略需合理设计。
- 适用场景:复杂系统(如服务器、混合负载场景)。
7. 多级反馈队列(MLFQ, Multilevel Feedback Queue)
- 核心思想:动态调整任务的队列层级和优先级。
- 新任务进入最高优先级队列。
- 任务未完成则降级到低优先级队列。
- 低优先级队列时间片更长。
- 特点:
- 结合抢占式和时间片轮转。
- 自动适应任务行为(如短任务快速完成)。
- 优点:平衡响应时间和吞吐量。
- 缺点:参数配置复杂(队列数量、时间片大小等)。
- 适用场景:通用操作系统(如Unix、Windows)。
8. 实时调度(Real-Time Scheduling)
- 核心思想:保证任务在截止时间(Deadline)前完成。
- 类型:
- 硬实时(Hard Real-Time):必须满足截止时间(如航天控制)。
- 软实时(Soft Real-Time):允许偶尔超时(如视频流)。
- 常用算法:
- 最早截止时间优先(EDF, Earliest Deadline First):动态选择截止时间最近的任务。
- 速率单调(RMS, Rate Monotonic Scheduling):静态优先级,周期短的任务优先级高。
- 适用场景:实时嵌入式系统、工业控制。
总结对比
| 算法 | 抢占性 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| FCFS | 非抢占 | 简单公平 | 护航效应,高平均等待时间 | 批处理系统 |
| SJF/SRTF | 可选 | 最小平均等待时间 | 长任务饥饿,需预知执行时间 | 已知执行时间的批处理 |
| 轮转调度(RR) | 抢占 | 响应快,公平性高 | 高上下文切换开销 | 分时系统 |
| 多级反馈队列 | 抢占 | 动态适应任务行为 | 参数配置复杂 | 通用操作系统 |
| 实时调度(EDF) | 抢占 | 保证截止时间 | 资源利用率低 | 实时系统 |
关键概念
- 抢占(Preemption):强制暂停当前任务以执行更高优先级任务。
- 饥饿(Starvation):低优先级任务长期无法执行。
- 吞吐量(Throughput):单位时间完成的任务数量。
- 周转时间(Turnaround Time):任务提交到完成的总时间。
- 响应时间(Response Time):任务提交到首次执行的时间。

2万+

被折叠的 条评论
为什么被折叠?



