Interval Tree

Interval Tree(区段树)在内存管理中有用到,比如rmap和vma中。

一直觉得有点神秘,今天来看一下。

是附带属性的红黑树

本质上区段树是一个红黑树,在红黑树的基础上增加了两个信息:

  • leftmost: 保存了整个树中最左叶子

  • subtree: 每个节点增加当前子树内区间最大值

优势

和红黑树相比,区段树的优势在与查找某区间内有较差的节点时,可以借助新增的这两个信息加速查找。

具体参考区段树提供的api:

  • interval_tree_iter_first()

  • interval_tree_iter_next()

测试代码

内核中有相关的测试代码,lib/interval_tree_test.c。这样可以看出简单的使用方法。

Last updated

Was this helpful?