为了计算时间我们通常使用系统调用,但是如果我想自己实现呢,有可能吗?Usingrdtsc
给了我从我们打开它开始的 cpu 时钟数量。仍然无法计算时间,因为为此我们需要 CPU 频率。基本问题是,在我看来,不仅我测量的 cpu 频率与我看到的不同,/proc/cpuinfo
而且它也会随着时间的推移而变化(超频和超频)。那么系统调用是如何实现的呢?
我正在寻找的解决方案框架是通过查看一些初始时间 t0、自 t0 以来的 cpu 时钟数量(使用rdtsc
)和 cpu 频率来计算时间。就像是
t1 = t0 + (rdtsc1 - rdtsc0) / frequency