Linux内核之rbtree(红黑树)

本文详细介绍了Linux内核中的红黑树实现,包括数据结构`rb_node`及其属性,以及RB树的相关操作,如查找、插入和删除节点。通过`rb_entry`宏和`container_of`宏来获取包含`rb_node`的结构体实例。同时,展示了如何初始化、遍历和检查红黑树的状态。
摘要由CSDN通过智能技术生成

   red-black tree(RB树)是一种平衡二叉树,它主要用于存储或者说索引可排序的键 值对数据。RB树(红黑树)与radix树和hash表都不同。radix树是一种比较适合用于 存储稀疏的数据集而且将用一个大整数进行插入,删除,查找的操作基础。而hash表 并不是以某种排序顺序进行存储,而且必须指定大小和hash函数。
     RB树与AVL树很相似,但是比AVL树有更好的插入和删除最坏情况的时间复杂度,以及 O(log n)的最坏查找时间复杂度。
     在Linux中有很多地方用到了RD树。anticipatory, deadline, 和CFQ I/O调度都使用 的是RB树进行请求跟踪,还有CD/DVD驱动的包管理也是如此。 高精度计时器(high-resolution timer)使用RB树组织定时请求。 EXT3文件系统也使用RB树来管理目录。 虚拟存储管理系统也是有RB树进行VMAs(Virtual Memory Areas)的管理。 当然还有文件描述符,密码钥匙,“等级令牌桶”调度的网络数据包都是用RB数据进 行组织和管理的。
    
    相关资料:
    Linux Weekly News article on red-black trees
    http://lwn.net/Articles/184495/
    Wikipedia entry on red-black trees

    http://en.wikipedia.org/wiki/Red-black_tree


    在Linux内核源代码中rb树的实现在lib/rbtree.c文件中,可以通过 #in
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值