硬件为内核提供了一个系统计时器来计算和管理时间。内核通过编程预先设定系统的定时器频率,也就是滴答率,每一个周期称为滴答,Linux内核开始从内核的2.5个版本将频率从100增加到1000(当然,它带来了很多优点和缺点)。



瞬间是一个全局变量在内核中记录从系统启动产生节律数。例如,如果计算系统已经运行了多长时间,它可以用jiffies /滴答速率计算。jiffies文件中定义:



外部无符号长挥发性jiffies;



你可以使用jiffies设置超时,例如:



无符号长超时= jiffies + tick_rate * 2 / 2秒后超时;



如果(time_before(jiffies,超时){



没有超时



}



别的{



有/超时



}



内核提供四个宏来比较文件中定义的节拍计数:



time_before(未知、已知)



time_after(未知、已知)



time_before_eq(未知、已知)



time_after_eq(未知、已知)



当比较这些宏可以避免由于后坐力jiffies引起的问题。



除了系统定时器之外,还有一个与时间相关的时钟:实时时钟(RTC),它是一个硬件时钟,用于系统时间的持久存储。在系统关闭,它依赖于主板上的电池保持时间。当系统启动时,内核初始化壁时通过读取RTC和存放在xtime变量,这是时钟最重要的作用。