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

Linux 线程调度核心要点

1. 基本单位:任务(Task)

Linux 内核不严格区分线程和进程,它们都被称为​​任务(Task)​​,共享相同的调度策略。线程本质上是共享同一内存地址空间和其他资源(如文件描述符)的任务。

2. 核心调度器:CFS(完全公平调度器)

这是 Linux 默认的调度策略,旨在为所有可运行任务​​公平地分配 CPU 时间​​。

  • ​工作原理​​:CFS 使用一颗​​红黑树​​来组织可运行的任务。树的排序依据是任务的​​虚拟运行时间(vruntime)​​ —— 即任务实际运行时间经过优先级加权后的值。
  • ​调度决策​​:CFS 总是选择 ​​vruntime 最小的任务​​来运行,这代表了它最“缺乏”CPU 时间。这保证了所有任务在较长的时间范围内都能获得公平的 CPU 份额。
  • ​优先级(Nice值)​​:用户可以通过 nice 值(-20 到 19,越小优先级越高)来影响调度的“公平”权重。高优先级(低 nice 值)的任务的 vruntime 增长得更慢,从而能获得更多的实际运行时间。

3. 调度策略(Schedule Policies)

CFS 主要管理普通任务,Linux 还提供了其他策略:

  • SCHED_OTHER / SCHED_NORMAL: 默认策略,即 CFS,用于普通任务。
  • SCHED_FIFO / SCHED_RR: ​​实时策略​​,优先级高于所有普通任务。
    • ​FIFO​​ (先进先出):高优先级任务会一直运行,直到它主动放弃、休眠或被更高优先级的任务抢占。
    • ​RR​​ (时间片轮转):与 FIFO 类似,但同级优先级的任务会共享 CPU,每个任务运行一个时间片后轮到下一个。
  • SCHED_BATCH / SCHED_IDLE: 用于低优先级后台任务,对交互响应要求低。

4. 多核负载均衡

在多核(SMP)系统中,调度器还需要将任务合理地分配到各个 CPU 核心上,以充分利用所有核心并减少缓存失效。这个过程由​​负载均衡器​​完成,它会定期在各个 CPU 之间迁移任务以平衡负载。


​总结一下​​:Linux 线程调度的核心是 ​​CFS​​,它通过​​虚拟运行时间(vruntime)​​ 和​​红黑树​​来实现公平性,同时支持​​实时优先级​​和​​多核负载均衡​​以满足不同场景的需求。

http://www.dtcms.com/a/356309.html

相关文章:

  • 期权合约作废了怎么处理?
  • AI共链·智存未来 | 绿算技术受邀出席华为AI SSD发布会
  • 若依微服务一键部署(RuoYi-Cloud):Nacos/Redis/MySQL + Gateway + Robot 接入(踩坑与修复全记录)
  • 吱吱企业通讯软件可私有化部署,构建安全可控的通讯办公平台
  • C++异常处理指南:构建健壮程序的错误处理机制
  • 2025年渗透测试面试题总结-39(题目+回答)
  • FDTD_mie散射_仿真学习(2)
  • AWS集成开发最佳实践:构建高效可靠的云管理平台
  • 海运业务怎么管?解析海运货代系统的核心功能模块
  • Blender建模软件基本操作--学习笔记1
  • CSS text-decoration-thickness:精细控制文本装饰线粗细的新属性
  • Git 9 ,.git/index.lock 文件冲突问题( .git/index.lock‘: File exists. )
  • 亚马逊巴西战略升级:物流网络重构背后的生态革新与技术赋能之路
  • 基于SpringBoot的足球青训俱乐部管理系统
  • 【数组特殊排序最小最大次小次大依次类推规律放置】2022-10-27
  • 香港电讯为知名投资公司搭建高效、安全IT管理服务体系
  • Java学习day_13之API(常用API对象克隆)
  • 高效接入:Suno API 与主流编程语言的结合
  • 从“安全诉讼”说起:奖励模型(Reward Model)是LLM对齐的总阀门(全视角分析)
  • 龙迅#LT7641GX适用于四路HDMI2.1/DP/TPYE-C转HDMI2.1混切应用,分辨率高达8K60HZ!
  • 【谷歌浏览器】浏览器实用自用版——谷歌浏览器(Google Chrome)离线纯净版安装 官方版无任何捆绑及广告 【离线安装谷歌浏览器】
  • 智能体开发:学习与实验 ReAct
  • AI Agent实战:提升大模型应用能力——提示链、响应净化与结构化输出技术详解
  • C# WinForms 使用 CyUSB.dll 访问 USB 设备
  • 当不想安装telnet或nc时,可使用 Linux 系统默认自带的bash原生网络功能或ping(辅助判断)测试连通性
  • Pytest 插件:pytest_runtest_protocol
  • Dify 1.8.0 全网首发,预告发布
  • ZArchiver解压器:强大的安卓解压缩工具
  • 外缺圆圆心检测
  • 【Linux】Make/Makefile (自动化构建):从“是什么”到“会用它”