Linux系统内核定时器机制详解(上)(4)

文章作者 100test 发表时间 2007:03:14 16:41:29
来源 100Test.Com百考试题网


7.6.3.2 动态定时器的时钟滴答基准timer_jiffies

由于动态定时器是在时钟中断的Bottom Half中被执行的,而从TIMER_BH向量被激活到其timer_bh()函数真正执行这段时间内可能会有几次时钟中断发生。因此内核必须记住上一次运行定时器机制是什么时候,也即内核必须保存上一次运行定时器机制时的jiffies值。为此,Linux在kernel/timer.c文件中定义了全局变量timer_jiffies来表示上一次运行定时器机制时的jiffies值。该变量的定义如下所示:

static unsigned long timer_jiffies.

7.6.3.3 对内核动态定时器链表的保护

由于内核动态定时器链表是一种系统全局共享资源,为了实现对它的互斥访问,Linux定义了专门的自旋锁timerlist_lock来保护。任何想要访问动态定时器链表的代码段都首先必须先持有该自旋锁,并且在访问结束后释放该自旋锁。其定义如下(kernel/timer.c):

/* Initialize both explicitly - lets try to have them in the same cache line */ 

spinlock_t timerlist_lock = SPIN_LOCK_UNLOCKED.


相关文章


Linux操作系统下的CAD系统详细介绍(1)
Linux程序开发:QT的内部进程通信(1)
Linux操作系统下的CAD系统详细介绍(2)
Linux操作系统上最好的10款开源游戏
Linux系统内核定时器机制详解(上)(4)
Linux系统内核定时器机制详解(上)(2)
Linux系统内核定时器机制详解(上)(3)
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛