- 论坛徽章:
- 0
|
本帖最后由 lysde 于 2011-08-08 11:22 编辑
回复 139# chenrvmldd
1. 首先第一个:我们知道红黑树是用来管理虚拟地址的,我记得在0.11版本的Linux中也有虚拟地址的概念,为什么不用红黑树来管理虚拟地址了,后来我仔细的想了想发现原来在0.11中每个进程最大的虚拟地址空间是64M,但是在现在的内核中32位的系统,虚拟地址3G,所以就引入了红黑树,好的,虚拟地址的管理是用红黑树,虚拟地址是用数据结构VMA来表示的,那么VMA这个东东,比没有VMA这个东东有哪些好处了?
对于第一个问题,加入这种二叉树的目的就是为了提高内存区域查找,插入,删除的效率,在ULK的第三章进程中有写到,当进程内存区域较少的时候(小于32个),就使用链表管理内存区域(memory region),当数量超过这个数目时就开始使用AVL树来组织内存区域(我看的是2.2内核,我觉的高版本的内核可能就是RB树了)
2. 第二个问题,到现在我也不是很深入的研究过:原来在2.2的版本左右吧,管理VMA的时候用的是AVL树,后来引入了RB-树,据说RD-树的统计性能要比AVL树要好,这个我也不是特别的清楚,等待高手过来解答!
这个问题你自己其实已经回答了,RB树的性能从理论上分析并不比AVL高,但是在实际的应用统计当中,它的效率要高于AVL树,我不是高手,也只是这样理解。 |
|