当前位置: 首页 > news >正文

Linux 任务调度策略

🌟 概述

Linux 内核以线程(任务)为单位进行调度,支持 SCHED_FIFO 和 SCHED_RR(实时调度)以及 SCHED_OTHER(基于 CFS,非实时调度)。

🔍 调度策略

1. SCHED_FIFO(先进先出)

  • 机制:按优先级和到达顺序运行,无时间片,直到阻塞、被抢占或终止。
  • 特点:优先级 1-99,低延迟,适合硬实时任务。
  • 场景:音频处理、工业控制。

2. SCHED_RR(轮转法)

  • 机制:同优先级线程按时间片轮转,用尽后重新排队。
  • 特点:优先级 1-99,平衡实时性和公平性。
  • 场景:视频流、实时通信。

3. SCHED_OTHER(CFS)

  • 机制:基于 vruntime 公平调度,动态分配 CPU 时间。
  • 特点:nice 值 -20 到 19,适合非实时任务。
  • 场景:Web 服务器、桌面应用。

📊 调度策略对比

特性SCHED_FIFOSCHED_RRSCHED_OTHER (CFS)
类型实时实时非实时
调度单位线程线程线程
调度方式先进先出时间片轮转vruntime 公平分配
时间片固定(10-100ms)动态调整
优先级1-991-99nice 值 -20 到 19
场景硬实时(如音频)软实时(如多媒体)通用任务(如服务器)
权限需 root需 root无需权限
风险低优先级线程可能被饿死时间片切换增加延迟不适合实时任务

🛠️ 主要 API

  • sched_setscheduler(pid, policy, param):设置线程策略和优先级。
  • sched_getscheduler(pid):查询线程策略。
  • sched_setparam(pid, param):设置优先级(SCHED_OTHER 忽略)。
  • sched_yield():让出 CPU。
  • 结构struct sched_param { int sched_priority; };

⚠️ 注意

  • SCHED_FIFO/RR 需 root 权限,优先级高于 SCHED_OTHER。
  • SCHED_OTHER 使用 nice 值调整优先级。
  • SCHED_FIFO 高优先级线程可能导致低优先级线程被饿死。

✅ 优点

  • SCHED_FIFO:低延迟,硬实时。
  • SCHED_RR:实时与公平平衡。
  • SCHED_OTHER:公平,适合通用任务。

🚫 局限性

  • SCHED_FIFO:可能饿死低优先级线程。
  • SCHED_RR:切换开销。
  • SCHED_OTHER:不适合实时。

相关文章:

  • Project Reactor响应式编程简介
  • Leetcode刷题(91~95)
  • 商品中心—3.商品可采可补可售的技术文档上
  • 与AI联手,ModbusTCP 转Ethercat控制系统升级解决刚需新思路
  • MyBatis-Plus 混合使用 XML 和注解
  • 一个教学项目pom.xml杂记
  • DevOps软件开发流程规范
  • 【笔记】NVIDIA AI Workbench 中安装 PyTorch
  • 山东大学软件学院项目实训-基于大模型的模拟面试系统-面试对话标题自动总结
  • 【计算机存储架构】层次化存储架构
  • JAVA-springboot Filter过滤器
  • Amazon Linux 2023 系统上 Radius 部署文档
  • 1Panel 部署 OpenResty + Redis 实现 IP 动态封禁教程
  • gbase8s数据库获取jdbc/odbc协议的几种方式
  • 合同管理登记台账是什么?合同管理登记台账有哪些功能?
  • 基于GA遗传优化的PID控制器最优控制参数整定matlab仿真
  • Matlab解决无法读取路径中的空格
  • 前端实战:用 HTML+JS 打造可拖动图像对比滑块,提升视觉交互体
  • 硬件行业职业规划四篇
  • (功能测试Charles)如何抓取手机http的报文
  • 大连seo快速排名/如何优化搜索引擎的搜索功能
  • 淮北市11月30日疫情/什么建站程序最利于seo
  • wordpress 本地头像/小程序seo
  • 上海做网站公司哪家好/软件推广怎么赚钱
  • 海口网络建站模板/上海培训机构
  • 做网站一年大概的盈利/网站优化推广seo