Linux 内核学习笔记(六)——定时器及时间管理 Timer and time management

  • A+
所属分类:linux技术
摘要

时间有相对、绝对时间之分。一个process在5s之后运行时相对时间,current time of day(也就是wall-time)是绝对时间,绝对时间一般是与用户交互时用到。


timers and time management

时间有相对、绝对时间之分。一个process在5s之后运行时相对时间,current time of day(也就是wall-time)是绝对时间,绝对时间一般是与用户交互时用到。

The system timer goes off (often called hitting or popping) at a preprogrammed frequency, called the tick rate.

越高的tick rate频率会使得定时器中断有更高的分辨率,同时时间驱动的时间的精确性也提升。然而过高的tick rate频率就会使得定时器中断被频繁启动,就需要花费更多的时间来处理timer interrupt handler,这也是更高的负载负担。

全局变量jiffies里面保存系统自启动以来tick数值。然而Converting from ticks to seconds is typically reserved for communicating with user-space, as the kernel itself rarely cares about any sort of absolute time.
jiffies总是unsigned long类型的变量。hitectures.With a tick rate of 100, a 32-bit jiffies variable would overflow in about 497 days.With HZ increased to 1000, however, that overflow now occurs in just 49.7 days! If jiffies were stored in a 64-bit variable on all architectures, then for any reasonable HZ value the jiffies variable would never overflow in anyone's lifetime. 和其他变量类似,溢出之后自动归零。另外kernel内部还有一些处理机制,类似于我过去BMS中计时器程序处理的巧妙办法。 kernel也会利用jiffies进行一些小的延时,loop,waiting等等,不过还不如将等待的时间scheduling去做其他的工作。

RTC时钟提供一个掉电之后仍能储存系统时间的设备。在电脑中这个RTC数值可以在BIOS界面进行修改。系统开机后,读取保存在RTC的数值作为system time。

timer本身的使用是非常简单的,不过timer因为是异步的,也会产生同步竞争等问题,需要注意。

参考文献

  1. Robert Love. "Linux Kernel Development." (2008).