我知道在各种操作系统上使用 CPU 时钟计数器获取时间增量的标准方法。我的问题是,这样的操作系统如何考虑 CPU 频率的变化以达到省电的目的。我最初认为这可以基于操作系统使用特定调用来测量频率以根据正在使用的内核、当前设置的频率等来获得校正频率的事实来解释。但后来我意识到,不是吗?如果 CPU 频率在两个时钟查询之间降低并恢复到其原始值,则使任何时间增量不准确。
例如采取以下场景:
查询 CPU 周期。操作系统会降低 CPU 频率以节省电量。其他一些代码在这里运行。操作系统提高 CPU 频率以提高性能。查询 CPU 周期。将 delta 计算为周期差除以频率。
这将产生不准确的增量,因为两个查询之间的 CPU 频率不是恒定的。操作系统或必须使用 CPU 周期处理时间增量的程序如何解决这个问题?