如何计算时间?

时间:2014-04-29 13:54:02

标签: linux time system-calls rdtsc

为了计算时间,我们通常使用系统调用,但如果我想自己实现它,怎么可能呢?使用rdtsc给出了我们打开它时的CPU时钟量。由于我们需要cpu频率用于此目的,因此仍无法计算时间。基本的问题是,在我看来,不仅我测量的CPU频率与我在/proc/cpuinfo中看到的不同,而且它也可以随时间变化(超频和降频)。那么系统调用是如何实现的呢?

我正在寻找的解决方案框架是通过查看一些初始时间t0,自t0(使用rdtsc)以来的cpu时钟量和cpu频率来计算时间。像

这样的东西
t1 = t0 + (rdtsc1 - rdtsc0) / frequency

1 个答案:

答案 0 :(得分:1)

大多数计算机都有一个独立于CPU的实时时钟,例如:在“BIOS”中。实时时钟的中断代码为0x1A,如下所示:http://en.wikipedia.org/wiki/BIOS_interrupt_call

因此,如果要实现像time()这样的东西,只需调用0x1A中断来查询实时时钟即可。当然这有点依赖于平台。