sysconf(_SC_CLK_TCK)返回什么?

liv*_*hak 14 c linux kernel

我试图了解各种sysconf宏.我编写了一个程序如下.

int main()
{
    fprintf(stdout, "No. of clock ticks per sec : %ld\n",sysconf(_SC_CLK_TCK));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我总是得到100的结果.我在一个时钟频率为2.93GHz的CPU上运行它.数字100的确切含义是什么.

iab*_*der 12

它只是每秒钟的时钟周期数,在你的情况下,内核配置为每秒100个时钟(或100Hz时钟).

  • @ liv2hak没有它没有关系,它是定时器中断CPU进行调度和其他任务的次数,100Hz是一个常用值,更高的频率等于更高的定时器分辨率和更多的开销. (8认同)
  • 嗯,不完全是......现代Linux内核根据当前负载使用动态时钟速率(即不再有周期性的滴答). (3认同)
  • @Claudio 当 `/proc/PID/stat` 返回时钟周期数的值时怎么可能?(字段 14-17,42-44。)如果是动态的,这些值将完全无用,因为您不知道流程历史记录中每个点的刻度持续时间是多少。 (3认同)
  • 你似乎暗示这与 CPU 时钟没有任何关系? (2认同)