正在加载
请稍等

菜单

红楼飞雪 梦

15526773247

文章

Home android 嵌入式开发 Linux的时间系统
Home android 嵌入式开发 Linux的时间系统

Linux的时间系统

android 嵌入式开发, linux开发学习 by

通过上面的时钟运作机制,我们知道了OS时钟在Linux中的重要地位。OS时钟记录的时间也就是通常所说的系统时间。系统时间是以“时钟滴答”为 单位的,而时钟中断的频率决定了一个时钟滴答的长短,例如每秒有100次时钟中断,那么一个时钟滴答的就是10毫秒(记为10ms),相应地,系统时间就 会每10ms增1。不同的操作系统对时钟滴答的定义是不同的,例如DOS的时钟滴答滴答为1/18.2s,Minix的时钟滴答为1/60s等等。

Linux中用全局变量jiffies表示系统自启动以来的时钟滴答数目。jiffy是“瞬间、一会儿”的意思,和“时钟滴答”表达的是同一个意思。jiffies是jiffy的复数形式,在/kernel/time.c中定义如下:

unsigned long volatile jiffies

在jiffies基础上,Linux提供了如下适合人们习惯的时间格式,在/include/linux/time.h中定义如下:

struct timespec {*  这是精度很高的表示*long    tv_sec;* 秒 (second) *long    tv_nsec;             /* 纳秒:十亿分之一秒( nanosecond)*/
};
 
struct timeval  {               /* 普通精度   */
   int tv_sec;          /*  秒 */
   int tv_usec;             /* 微秒:百万分之一秒(microsecond)*/
};
 
struct timezone {                     /*  时区  */
   int tz_minuteswest;    /*  格林尼治时间往西方的时差 */
   int tz_dsttime;                  /* 时间修正方式 */
};

tv_sec表示秒(second),tv_usec表示微秒(microsecond,百万分之一秒即10-6秒),tv_nsec表示纳秒(nanosecond,十亿分之一秒即10-9秒)。定义tb_usec和tv_nsec的目的是为了适用不同的使用要求,不同的场合根据对时间精度的要求选用这两种表示。

另外,Linux还定义了用于表示更加符合大众习惯的时间表示:年、月、日。但是万变不离其宗,所有的时间应用都是建立在jiffies基础之上的,我们将详细讨论jiffies的产生和其作用。 简而言之,jiffies产生于时钟中断!

 

11 2015-09

 

我要 分享

 

 

本文 作者

 

相关 文章