现在的位置: 首页 > 综合 > 正文

Linux内核中的jiffies

2013年11月02日 ⁄ 综合 ⁄ 共 813字 ⁄ 字号 评论关闭

硬件给内核提供一个系统定时器用以计算和管理时间,内核通过编程预设系统定时器的频率,即节拍率(tick rate),每一个周期称作一个tick(节拍)。Linux内核从2.5版内核开始把频率从100调高到1000(当然带来了很多优点,也有一些缺点).
   jiffies是内核中的一个全局变量,用来记录自系统启动一来产生的节拍数。譬如,如果计算系统运行了多长时间,可以用 jiffies/tick rate 来计算。jiffies定义在文件<linux/jiffies.h>中:

extern
unsigned
long
volatile
jiffies;

    可以利用jiffies设置超时等,譬如:

unsigned
long
timeout =
jiffies +
tick_rate *
2;
// 2秒钟后超时


   
    if
(
time_before(
jiffies,
timeout)
{

       // 还没有超时


    }

    else
{

       // 已经超时


    }

 
  
内核提供了四个宏来比较节拍计数,这些宏定义在文件<linux/jiffies.h>中:

    time_before(
unknown,
known)

    time_after(
unknown,
known)

    time_before_eq(
unknown,
known)

    time_after_eq(
unknown,
known)

    比较的时候用这些宏可以避免jiffies由于过大造成的回绕问题。

   
除了系统定时器外,还有一个与时间有关的时钟:实时时钟(RTC),这是一个硬件时钟,用来持久存放系统时间,系统关闭后靠主板上的微型电池保持计时。系
统启动时,内核通过读取RTC来初始化Wall Time,并存放在xtime变量中,这是RTC最主要的作用。

 

From: http://blog.chinaunix.net/u/18846/showart_267864.html

抱歉!评论已关闭.