gpt4 book ai didi

c - clock_gettime 和 getrusage 有什么关系?

转载 作者:行者123 更新时间:2023-12-01 15:02:06 25 4
gpt4 key购买 nike

我想了解 Linux 中 cpu 时间是如何计算的。特别是,我想关注这个问题 clock_gettimegetrusage .我想知道这两个有什么关系。

  • 一个会调用另一个吗?
  • 它们都依赖于相同的底层机制吗?
  • 如果是这样的话,他们最大的共同点是什么,我的意思是,linux kernel 的功能是什么?他们都打电话来争取时间吗?
  • 如果他们不依赖于相同的底层机制,那为什么呢?

最佳答案

Unix 和 Linux 中有很多时钟。有些是挂钟 (CLOCK_REALTIME),有些是修改后的挂钟 (CLOCK_MONO, CLOCK_BOOT),还有一些是 CPU 时间时钟 (CLOCK_PROCESS_CPUTIME_ID, CLOCK_THREAD_CPUTIME_ID)。

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

我怀疑,但尚未证实,clock_gettime 与 CPU 时间相关的 clkids 之一从与 getrusage 相同的 CPU 计数器中提取数据。

依次回答你的问题:

Does one call the other one?

我不这么认为。

Do they both rely on the same underlying mechanism?

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

If so what's their greatest common denominator, and by that I mean, what function from the linux kernel are they both calling to get the time?

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

And if they are not relying on the same underlying mechanism then why?

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

关于c - clock_gettime 和 getrusage 有什么关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51487121/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com