在linux 5.8内核里grep了一下,罗列了一下使用rbtree的模块:
-- drm使用的mm
-- 网络协议栈中bgp的nethop的管理,nethop
-- ip侦测地址的缓存管理,inet_peer
-- swap, swap_info_struct
-- block queue 上的电梯算法
-- nfs, nfs_inode
-- skbuff, struct skbuff
-- vmap
-- fscache
-- Kerberos/disk encryption 用的key的管理,以可选的双连表、红黑树管理
-- rpc, sturct rpc_rqst - rpc receive queue 以可选的双连表、红黑树管理
-- blkdev的request, 代码注释中提示rb tree只用在io调度内部
-- iommu
-- sched_entity
-- mm_struct
-- 分布式存储ceph
-- kernel fs (什么事kernel fs?)
-- perf event
-- rmap, anon_vma
-- sysctl, struct ctl_node
-- memory policy
-- timerqueue
interval tree, 区间树,一种对动态集合进行维护的扩张红黑树
从上面可以看到内存子系统的管理查找部分都适用了红黑树。内核里很多时候使用链表、红黑树两种方式管理复杂的数据。