LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 864|回复: 8

有关时间的问题

[复制链接]
发表于 2005-9-14 12:13:13 | 显示全部楼层 |阅读模式
linux内核为什么要提供微妙级即纳秒级的度量,这有意义吗?什么时候会用到这样精确的值?cpu处理时钟中断的时机(或者说频率)是由HZ决定的,现在他的值是1000,也就是说cpu只能在每一毫秒后才能有机会做些什么事,根本无法精确到微妙和纳秒来完成某些动作.另外,有些用户希望得到微妙级,纳秒级的时间.问题是,从用户发出请求到内核得到这个精确时间,再到用户真正得到这个数据,其间经历了多长时间呢?会不会已经超过一微妙,或者至少超过一纳秒.
发表于 2005-9-14 12:25:16 | 显示全部楼层
Post by rickxbx
linux内核为什么要提供微妙级即纳秒级的度量.


没有提供呀,你指的是不是nanosleep?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-14 12:42:38 | 显示全部楼层
Post by daemeon
没有提供呀,你指的是不是nanosleep?

不是,他自然不会有纳秒级的睡眠,我指的是比如gettimeofday这样的系统调用,以及rdtsc这样的函数,为什么会有这样的函数,他们用在什么地方呢?
回复 支持 反对

使用道具 举报

发表于 2005-9-14 12:57:39 | 显示全部楼层
gettimeofday似乎只提供毫秒级的精度, rdtsc好想用来计算CPU clock rate in Hz.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-14 13:09:39 | 显示全部楼层
Post by daemeon
gettimeofday似乎只提供毫秒级的精度, rdtsc好想用来计算CPU clock rate in Hz.

这是do_gettimeofday的原型:

  1. void do_gettimeofday (struct timeval *tv)
复制代码

  1.      18 struct timeval {
  2.      19     time_t      tv_sec;     /* seconds */
  3.      20     suseconds_t tv_usec;    /* microseconds */
  4.      21 };
复制代码

很显然是精确到微妙级呀.而rdtsc在gettimeofday中会被调用.

btw:如果你在南京就好了,就有人跟我一块学习了...
回复 支持 反对

使用道具 举报

发表于 2005-9-14 17:32:54 | 显示全部楼层
Sorry, 偶把microseconds理解成毫秒了.

偶觉得提供这样到的精度可以用来计算代码执行的时间, 也可能是因为POSIX标准或Just for fun
回复 支持 反对

使用道具 举报

发表于 2005-9-15 23:15:11 | 显示全部楼层
i386上面有一个64位的时钟寄存器
下面这篇文章可能能说明些问题
http://www.bytemen.net/dev/html/150.htm
回复 支持 反对

使用道具 举报

发表于 2005-9-15 23:16:20 | 显示全部楼层
所以这个东西应该和Arch有关,在有些体系解构下面是能用的
回复 支持 反对

使用道具 举报

发表于 2005-9-30 14:48:32 | 显示全部楼层
那是为了延时,硬件驱动要求微妙纳秒级的延时,时序才能正确
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表