Linux内核 idr机制

 

idr机制解决了什么问题?为什么需要idr机制(或者说,idr机制这种解决方案,相对已有的其他方案,有什么优势所在) ?

  idr在linux内核中指的就是整数ID管理机制,从本质上来说,这就是一种将整数ID号和特定指针关联在一起的机制。

  假设我们的代码内需要将一个设备的ID号和描述该设备信息的结构体联系,我们应该怎么做?

  最简单的方法当然是通过数组(在当前场景下准确说,是结构体数组,每个数组元素包含一个ID和一个指针。但是结构体数组,依然是数组!)进行索引,

  但如果ID号的范围很大(比如32位表示的ID号),则用数组索引显然不可能,因为这需要定义很大的数组,消耗很大的内存空间。

  第二种方法是用链表,查找的时候根据ID来遍历链表。但如果实际存在的设备较多,则链表的查询效率会很低。

  遇到上述清况,我们就可以采用idr机制,该机制内部采用radix树实现,可以很方便地将整数和指针关联起来,并且具有很高的搜索效率。

 

idr树实现机制,参考:

https://blog.csdn.net/midion9/article/details/50923095

 

 

 

 

.

 

posted @ 2020-08-31 22:52  一匹夫  阅读(514)  评论(0编辑  收藏  举报