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

原创 2015年07月10日 15:08:00

  解决了struct timer_list中的expires成员为什么是unsigned long类型的问题之后。悟空决定自己揭开为什么采用双向链表管理数据结构。悟空从网上下载了达人老师的课件,决定先研究定时器的软件架构,Linux内核采用如下的结构体表示:

  struct tvec_base {

  spinlock_t lock;

  struct timer_list *running_timer;

  unsigned long timer_jiffies;

  unsigned long next_timer;

  struct tvec_root tv1;

  struct tvec tv2;

  struct tvec tv3;

  struct tvec tv4;

  struct tvec tv5;

  };

  struct tvec {

  struct list_head vec[TVN_SIZE];

  };

  struct tvec_root {

  struct list_head vec[TVR_SIZE];

  };

  从上面可以看到tvec_base中有五个数组,分别是tv1、tv2、tv3、tv4、tv5。其中tv1的大小为TVR_SIZE,一般是256。而tv2、tv3、tv4、tv5的数组大小是TVN_SIZE,一般是64。Linux系统为每个CPU都分配了一个struct tvec_base成员,每个CPU通过这个成员来管理本CPU上的所有的低分辨率的定时器。

  具体组织如下图所示:

  看到这里悟空终于对Linux内核的低分辨率的定时器的组织架构有了比较清晰的认识。但是这幅图只是表示了Linux内核中特定时间的定时器的切片图。而随着时间的推移,这幅图又是怎么变化的呢?而且tv1、tv2、tv3、tv4、tv5中又是存放了什么数据呢?正当悟空打算揭开这些问题的谜底之后,接下来的事情让悟空郁闷了,只见课件的最后显示着“未完,待续中”。


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

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

一直以来“2号童鞋”都感觉自己比较笨,之所以感觉自己比较笨是因为这个世界有很多问题无法想明白,比如上节课老师为什么没有讲软中断的注销函数。为了想明白这个问题,“2号童鞋”失眠了好几晚,可是失眠了好几晚...

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

由于唐僧请来了这么多木人上课,一下子增加了不少的人气,所以最近唐僧的这里迎来了很多学生报名试听,这着实让唐僧高兴了好一阵,唐僧心想终于不用对着木人上课了。所以唐僧打算好好上一下课,争取留住这些学生。为...

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

悟空觉得课堂估计是去不了,所以自己打算在家里继续自学,悟空知道达人老师接下来需要讲的是低分辨率的定时器。所谓定时器就是设定一个未来的时间,让系统在这个未来的时间触发一个特定的事件,执行一些预先设定的程...

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

今天八戒比较开心,原因是最近考试考了满分。这让大家对八戒刮目相看,大家没想到八戒每天在课堂睡觉,竟然最后还能考满分。所以悟空和沙僧来向八戒道贺。   悟空:看不出来啊,你这猪脑袋竟然能记住这么多东西...

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

孙悟空完成了护送唐僧到西天取得真经的任务之后,被如来封为“斗战胜佛”。可这“斗战胜佛”是个闲差,整天无所事事,这一晃1400多年就这么过去,最近孙悟空感觉自己都跟不上这个时代了,想学点新的本领。于是跑...

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

今天悟空要讲的是中断的约束,这让悟空想起了师傅的紧箍咒,所以悟空一看到约束两字就有点不爽,总觉得这两个字扎眼。   悟空:中断是内核中执行最敏感的任务,因此需要满足一些约束。   A童鞋:那么需要...

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

为了尽快解决这个问题,悟空打算好好的研究一下该无线的驱动程序,悟空先花费了一晚的时间统计了一下驱动程序,总文件数为55个,总的代码行数为45954行。统计完之后悟空开始研究驱动的代码,可是看来看去,悟...

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

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

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

悟空想了一夜还没有想明白为什么图4不是树,这让悟空很受打击。但是很受打击悟空也需要继续树的研究,悟空决定先把这个问题放一放,继续Linux内核的研究。接下来需要研究的是二叉树。二叉树是一种树,这种树的...

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

最近沙僧休息了好久,唐僧希望沙僧能够讲工作队列,工作队列是Linux系统中最为重要的一个中断后半部分机制,也是最为实用的一种。这让沙僧很是高兴,所以一大早沙僧就兴奋的来到了课堂。   沙僧:工作队列...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:悟空学Linux专栏----第18篇
举报原因:
原因补充:

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