容易混淆LINUX时钟的xtime和jiffie…

来源:互联网 发布:装修图纸软件 编辑:程序博客网 时间:2024/05/19 10:15

在LINUX的时钟中断中涉及至二个全局变量一个是xtime,它是timeval数据结构变量,另一个则是jiffies,首先看timeval结构

struct timeval

{

time_t tv_sec;

susecond_t tv_usec;

}

这个地方一直有很多人容易混淆,到底microsecond是毫秒还是微秒,我也经常犯这个错误,也被搞的糊涂了很久,我们理清一下吧,1秒=1000毫秒(3个零),1秒=1000000微秒(6个零),1秒=1000 000 000纳秒(9个零),1秒=1000 000 000000皮秒(12个零)。秒用s表现,毫秒用ms,微秒用μs表示,纳秒用ns表示,皮秒用ps表示,他们的分级单位是千,即每次3个零。混淆的原因找到了,由于毫秒用ms表示,所以我老是以为microsecond是毫秒,所以就把tv_usec理解错了。microsecond查词霸也是微秒的意思,看来单位的表示迷惑了我,也迷惑了大多数人,请朋友们牢记这里,非常重要。

那么xtime是从cmos电路中取得的时间,一般是从某一历史时刻开始到现在的时间,也就是为了取得我们操作系统上显示的日期。这个就是所谓的“实时时钟”,它的精确度是微秒。

 

jiffies是记录着从电脑开机到现在总共的时钟中断次数。在linux内核中jiffies远比xtime重要,那么他取决于系统的频率,单位是Hz,这里不得不说一下频率的单位,1MHz=1000,000Hz(6个零),1KHz=1000Hz(3个零).频率是周期的倒数,一般是一秒钟中断产生的次数,所以,假如我们需要知道系统的精确的时间单位时,需要换算了,假如我们系统的频率是200Mhz,那么一次中断的间隔是1秒/200,000,000Hz=0.000000005秒看一下上面我们的时间单位,对照一下小数点后面是9个零,所以理论上我们系统的精确度是5纳秒。X86下的LINUX系统时钟频率是一个常数HZ(其取值与具体的体系结构有关)来决定的,通常HZ=1000,那么他的精度度就是1ms(毫秒)。也就是说每1ms一次中断。所以一般来说Linux的精确度是1毫秒。

原创粉丝点击