-1

为了计算时间我们通常使用系统调用,但是如果我想自己实现呢,有可能吗?Usingrdtsc给了我从我们打开它开始的 cpu 时钟数量。仍然无法计算时间,因为为此我们需要 CPU 频率。基本问题是,在我看来,不仅我测量的 cpu 频率与我看到的不同,/proc/cpuinfo而且它也会随着时间的推移而变化(超频和超频)。那么系统调用是如何实现的呢?

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

t1 = t0 + (rdtsc1 - rdtsc0) / frequency
4

1 回答 1

1

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

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

于 2014-04-29T13:59:21.947 回答