代码之家  ›  专栏  ›  技术社区  ›  Vincent

时钟和时间有什么关系?

  •  3
  • Vincent  · 技术社区  · 7 年前

    我试图理解Linux中如何计算CPU时间。特别是,我想把重点放在这个问题上 clock_gettime 以及在 getrusage . 我想知道这两者有什么关系。

    • 一个叫另一个吗?
    • 它们都依赖相同的基本机制吗?
    • 如果是这样的话,它们最大的公分母是什么,我的意思是,从 linux kernel 他们都打电话来争取时间吗?
    • 如果它们不依赖于相同的底层机制,那么为什么呢?
    1 回复  |  直到 7 年前
        1
  •  1
  •   Steve Summit    7 年前

    在Unix和Linux中有很多时钟。有些是挂钟(时钟实时),有些是修改过的挂钟(时钟单声道,时钟引导),有些是CPU时间时钟(时钟处理,时钟线程,CPU时间ID)。

    clock_gettime 基本上可以从任何分配了时钟的时钟中提取。(在内核中,基本上有代码为每个clkid定义一个适当的 get 方法 时钟开始计时 使用。)

    我怀疑,但还没有证实 时钟开始计时 其中一个与CPU时间相关的clkids从与 getrusage 做。

    依次回答您的问题:

    一个叫另一个吗?

    我不相信。

    它们都依赖相同的基本机制吗?

    我相信是的,但我还没有证实这一点。

    如果是这样的话,它们最大的共同点是什么?我的意思是,它们都在调用Linux内核的什么函数来获取时间?

    我不确定。(对不起。我在所有这些方面的工作都集中在墙时间,而不是CPU时间。)

    如果它们不依赖于相同的底层机制,那么为什么呢?

    因为Linux内核中与时间相关的代码非常复杂,并且试图服务于许多不同的主机。