操作系统中的任务调度算法


操作系统中的任务调度算法是决定如何分配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):任务提交到首次执行的时间。

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值