【发布时间】:2019-04-20 12:13:07
【问题描述】:
我不明白时钟功能在操作系统中是如何工作的。
首先www.cplusplus.com中时钟功能的文档是:
Returns the processor time consumed by the program.
The value returned is expressed in clock ticks[...]
据我了解,时钟功能必须直接访问 CPU 内的某个寄存器,该寄存器是 CPU 周期的计数器。这怎么可能?我的意思是,任何 32 位的寄存器如果以 CPU 频率递增一个单位,很快就会溢出。操作系统是否以某种方式处理此溢出?
【问题讨论】:
-
正如 R.. 的回答所指出的,只要有其他时钟可用,就不需要 CPU 周期计数器来实现
clock。但是,CPU 周期跟踪可以通过分别检索 64 位计数器的低 32 位和高 32 位的指令来完成,或者使用每次 32 位回绕时触发的中断来完成。每次中断触发时,操作系统都会为高位增加自己的计数器。
标签: c linux operating-system clock