zoukankan      html  css  js  c++  java
  • 内核多级多级hash在内核中应用: 变种radix tree在page cache中的应用

    时间紧张,先记一笔,后续优化与完善。

        考参:

        radix tree in kernel : Trees I: Radix trees

        

        

        http://lwn.net/Articles/175432/

        


        

    一般的radix tree(注意,这不是内核顶用的radix tree哦)
    http://en.wikipedia.org/wiki/Radix_tree

        这里论讨的是变种的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。

  • 相关阅读:
    iOS开发之WIFI,3G/4G两种网络同时使用技巧
    UIScreen的scale属性
    iOS开发中的Self-Manager 模式
    iOS UICollectionView简单使用
    Size Classes with Xcode 6
    SizeClass介绍
    AutoLayout处理UITableView动态高度
    在Scrollview中使用AutoLayout
    hashmap与hashtable的本质区别
    MySQL的5大引擎及优劣之分
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3057416.html
Copyright © 2011-2022 走看看