悟空学Linux专栏----第7篇

原创 2015年07月08日 10:50:30

  有了队列的简单是最大的奥秘之后,悟空感觉自己找到了研究Linux内核代码的感觉了,每次悟空研究一段代码的时候,悟空都会拿这段代码设计的够不够简单来衡量代码的质量。而且悟空发现Linux内核中很多概念都遵循了这个原则,比如Linux中一切皆是文件的概念,也就是Linux中所有的东西都是文件,就连硬件设备也被称为设备文件。所有的操作都遵循文件的操作,大大简化了操作接口。

  但是最近悟空碰到了一个令他头疼的问题,也就是Linux内核中的红黑二叉树。红黑二叉树不但不简单,而且很难理解。设计上更是很难实现,为了这个问题悟空已经在花果山的树林里上蹿下跳了好几晚,但是在树上蹿了好几晚悟空依然没法找到问题的答案。首先什么是红黑二叉树,红黑二叉树又有什么特点?其次Linux内核为什么要选择红黑二叉树?这一个个问题就像师傅的紧箍咒一样,让悟空头疼,他真想吊死在树上,如果他能死的话。

  最后,悟空决定一个一个解决,先来解决什么是红黑二叉树。红黑二叉树是一种自平衡二叉搜索树。这句话不但很拗口,而且很难理解。这里句话中包括了几个概念:树、二叉树、二叉搜索树、平衡二叉搜素树、自平衡二叉搜素树、半平衡二叉搜素树。

  在数学意义上,树是一个无环的、连接的有向图,其中任何一个顶点(在树里面叫节点)具有0个或者多个出边以及0个或者1个入边。这句话中有四个含义:

  1.无环,也就是最后这个树中不能出现环;

  2.有向图,也就是各个节点之间相连的连线是有方向的;

  3.顶点具有0个或多个出边;

  4.顶点具有0个或一个入边。

  悟空感觉语言表达的太抽象了,很难理解,于是决定求助于万能的“谷哥”,“谷哥”介绍了下面几副图:


  图 1


  图 2


  图 3

  

        图 4

  “谷哥”还告诉悟空:图1、图2、图4都不是树,只有图3才是树。这图1、图2不是树悟空可以理解,因为图1违反了无环和顶点具有0个或一个入边的规则,图2违反了有向图的标准。但是为什么图4也不是树呢?这图4明明就是一颗树吗?“谷哥,你逗我呢!”

  悟空想了好久也没搞明白,看来今晚又是一个“爬树的”夜了。


版权声明:本文为博主原创文章,未经博主允许不得转载。

悟空学Linux专栏----第22篇

下课之后达人感到比较开心,因为今天悟空在课堂上提了不少的问题,达人心想今晚终于可以睡一个好觉了,所以达人今晚回家之后就早早的洗澡上床了。但是正当达人快要睡着的时候突然听到了外面有砰砰的敲门声,达人起来...
  • wukonglinux
  • wukonglinux
  • 2015年07月13日 10:11
  • 167

悟空学Linux专栏----第46篇

(Linux内核同步机制之信号量)   从这篇开始就来讲讲Linux内核的同步机制吧!   首先我们来看看semaphore信号量吧;定义在   struct semaphore {   sp...
  • wukonglinux
  • wukonglinux
  • 2015年07月14日 10:34
  • 194

悟空学Linux专栏----第28篇

由于唐僧上的课很多笑声,加上唐僧比较帅,所以“西游嵌入式培训班”一下子火了,很多人纷纷跑来报名,其中美女最多。这着实让唐僧高兴了很久,但是高兴之后唐僧也纠结,这么多的学生,需要多少老师啊?唐僧要求他的...
  • wukonglinux
  • wukonglinux
  • 2015年07月14日 10:04
  • 170

悟空学Linux专栏----第39篇

最近沙僧休息了好久,唐僧希望沙僧能够讲工作队列,工作队列是Linux系统中最为重要的一个中断后半部分机制,也是最为实用的一种。这让沙僧很是高兴,所以一大早沙僧就兴奋的来到了课堂。   沙僧:工作队列...
  • wukonglinux
  • wukonglinux
  • 2015年07月14日 10:19
  • 204

悟空学Linux专栏----第44篇

悟空讨厌关中断,关中断很暴力,但是再暴力也比导致系统异常好,所以悟空决定将所有的发送队列的自旋锁都使用关中断的自旋锁。修改完代码之后,悟空很开心,因为这是悟空第一次改正大牛错误的代码,能够找到别人的错...
  • wukonglinux
  • wukonglinux
  • 2015年07月14日 10:31
  • 155

悟空学Linux专栏----第9篇

研究完了什么是红黑树之后,悟空决定研究的下一个问题是:红黑树有什么特点?为什么要给这个半平衡二叉树着色呢?悟空感觉一个人研究太累了,还是去找人请教来的快。这次悟空还是想到了达人先生,悟空决定再次变成八...
  • wukonglinux
  • wukonglinux
  • 2015年07月08日 10:54
  • 317

悟空学Linux专栏----第31篇

自从悟空答应了“2号童鞋”下节课讲解Linux系统为什么不使用C++,而使用C作为主要语言之后。悟空就头大,查阅了很多资料,最后都没有得出一个比较有说服力的结论。这让悟空很是郁闷,心想自己要食言了,最...
  • wukonglinux
  • wukonglinux
  • 2015年07月14日 10:07
  • 176

悟空学Linux专栏----第6篇

研究了Linux内核的链表之后,悟空第一次被Linux内核高超的设计技巧所吸引,一个简单的双向链表中竟然包含了这么多的道理。悟空深深的被这些看似简单,却十分高效的设计所震撼。所以悟空决定好好的研究一下...
  • wukonglinux
  • wukonglinux
  • 2015年07月08日 10:49
  • 190

悟空学Linux专栏----第35篇

因为悟空昨晚好好研究了一下软中断,所以悟空今天上课心里终于有底了。   悟空:Linux内核采用softirq_action结构体来表示软中断,具体结构体如下   struct softirq_a...
  • wukonglinux
  • wukonglinux
  • 2015年07月14日 10:12
  • 156

悟空学Linux专栏----第29篇

今天悟空要讲的是中断的约束,这让悟空想起了师傅的紧箍咒,所以悟空一看到约束两字就有点不爽,总觉得这两个字扎眼。   悟空:中断是内核中执行最敏感的任务,因此需要满足一些约束。   A童鞋:那么需要...
  • wukonglinux
  • wukonglinux
  • 2015年07月14日 10:05
  • 179
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:悟空学Linux专栏----第7篇
举报原因:
原因补充:

(最多只允许输入30个字)