时间紧张,先记一笔,后续优化与完善。
考参:
radix tree in kernel : Trees I: Radix trees
http://lwn.net/Articles/175432/
这里论讨的是变种的radix tree,请知悉.
radix tree的心核想思是什么?
hash的冲突处置策略是拉链.
hash的key是整型值(址地), value是个指针, 算是个多级hash_map.
多级hash的现实方法是, 整型值的前几位(1~6bit)用来做一级hash, 间中几位(7~12)用来做二级hash, 接下来的几位(13~18)来做三级hash
为什么要用多级hash? 而不是见常的一级hash?
因为, 如果用一级hash, 内核中的hash的算法的长度是一开始就牢固的. 如果设的太小, 当page cache变大时, 冲突会变得很多.
如果设置的过大, 则当page cache很小时又有些糟蹋!
所以, 内核应用了多级hash. 多级hash的处好时, 面临疏稀的page cache, 存储效率极高, 不糟蹋空间. 因为大部分孩子节点都是空的, 也就是说没有孩子分支. 比 举个极端的例子, 当page cache中只有一个page时, 那么radix tree只需要三个部内点结, 第一层一个点结:root, 第二层也只有一个点结, 第三层也只有一个点结!!
文章结束给大家分享下程序员的一些笑话语录:
3G普不普及现在已经不是看终端了,而是看应用,有好的,便宜实用的应用,花1000多买个能用的智能手机应该不是什么难事。反过来说,你200元拿一个智能手机,没有好的应用,看个电影要几十元,也是没人用3G。