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

红黑树的应用场景 —— 进程调度 CFS 与内存管理

一、红黑树在操作系统中的“实战”应用

📌 1. 进程调度器:CFS(Completely Fair Scheduler)

CFS 是 Linux 的默认调度器(从 2.6.23 起),它使用红黑树维护就绪队列。

✨ 为什么用红黑树?

CFS 的目标是:让每个进程都公平地获得 CPU 时间。因此需要:

  • 快速查找最“少运行”的进程;
  • 快速插入新的进程;
  • 快速删除终止的进程。

红黑树非常适合:

  • O(log n) 插入、查找、删除;
  • 有序:中序遍历就是进程运行时间从少到多排列;
  • 可快速找到最小值(左子树最左节点)—— 当前最应该调度的进程。
👇 示例:

CFS 会把每个可运行进程放入红黑树中,key 是进程的“虚拟运行时间 vruntime”,值是指向进程控制块(task_struct)的指针。

每次调度器都从红黑树中找出 vruntime 最小的进程运行 —— 实现了“完全公平”。


📌 2. 虚拟内存管理(VMA 红黑树)

Linux 的每个进程都有一个内存区域描述符 vm_area_struct(VMA)链表,这些结构按照地址顺序排列。为了提高查找效率,Linux 使用红黑树来辅助管理。

🧠 应用场景:
  • 当你 malloc() 一个新内存块;
  • 当你触发 page fault
  • 当你调用 mmap() 映射文件;
    Linux 需要快速查找和修改某个虚拟地址对应的 VMA。
🔍 查找方式:

查找“某个地址属于哪个区间”,在红黑树中通过地址作为 key 可以高效进行。


二、图示简化(仅理解用途)

CFS 红黑树                   虚拟内存红黑树
------------                 -------------------
| vruntime: 7 |              | 0x00400000 - 0x00500000 |
| PID: 1234   |              | 代码段                  |
------------                 -------------------/                                   \子进程                               | 0x00600000 - 0x00610000 || 堆 segment              |

三、为什么不是 AVL/B/B+?

结构

不用的原因

AVL 树

过于严格平衡,插入删除旋转次数多,系统开销大

B/B+ 树

多路分支,适合磁盘存储,内存中二分更高效

红黑树 ✅

插入删除相对简单,平衡性足够,速度快,适合系统场景


四、小结:系统级红黑树应用特点

应用场景

数据结构作用

性能关键点

CFS

维护就绪进程的公平调度

最小 vruntime 查找

内存管理

查询虚拟地址区间

地址范围查找效率


五、思考

  • 你能想象下,当一个新进程加入时,红黑树内部会如何旋转和保持平衡吗?
  • 接下来我们将进入更“硬核”的内容:红黑树的数学证明与推导

相关文章:

  • 视频编解码学习7之视频编码简介
  • 6. 进程控制
  • 初学者的AI智能体课程:构建AI智能体的十堂课
  • 在k8s中,如何实现服务的访问,k8s的ip是变化的,怎么保证能访问到我的服务
  • Perspective,数据可视化的超级引擎!
  • K8S常见问题汇总
  • PDF生成模块开发经验分享
  • [5-2] 对射式红外传感器计次旋转编码器计次 江协科技学习笔记(38个知识点)
  • XL32F001国产低成本单片机,24MHz主频,24KB Flash,3KB SRAM
  • 【探寻C++之旅】第十三章:红黑树
  • Python Cookbook-7.8 使用 Berkeley DB 数据库
  • TensorFlow 2.x入门实战:从零基础到图像分类项目
  • 物流无人机自动化装卸技术解析!
  • Python在自动驾驶实时数据处理中的应用:让AI驾驶更智能、更高效
  • Python奶茶系统
  • 能耗优化新引擎:EIOT平台助力企业降本增效
  • Redis实现分布式获取全局唯一自增ID的案例。
  • 二极管的动态特性
  • 如何设置内网映射端口到外网访问?哪些软件可以进行端口映射?
  • 多级路由器如何避免IP冲突
  • 眉山“笑气”迷局:草莓熊瓶背后的隐秘与危机
  • 如此城市|上海老邬:《爱情神话》就是我生活的一部分
  • 绿城房地产集团:近半年累计花费20.6亿元购买旗下债券
  • 上海“随申兑”服务平台有哪些功能?已归集800余个惠企政策
  • AMD:预计美国芯片出口管制将对全年营收造成15亿美元损失
  • 碧桂园服务:拟向杨惠妍全资持有的公司提供10亿元贷款,借款将转借给碧桂园用作保交楼