Я знаю стандартные методы получения дельты времени с помощью счетчиков тактовой частоты ЦП в различных операционных системах. У меня вопрос, как такие операционные системы учитывают изменение частоты процессора в целях энергосбережения. Сначала я думал, что это можно объяснить тем фактом, что ОС использует определенные вызовы для измерения частоты, чтобы получить скорректированную частоту в зависимости от того, какое ядро используется, какая частота сейчас установлена и т. Д. Но потом я понял, что это не так. сделать любую временную дельту неточной, если частота ЦП была понижена и возвращена к исходному значению между двумя запросами часов.
Например, возьмем следующий сценарий:
Запросите циклы ЦП. Операционная система снижает частоту процессора для экономии энергии. Здесь выполняется какой-то другой код. Операционная система повышает частоту процессора для повышения производительности. Запросите циклы ЦП. Вычислите дельту как разность циклов, деленную на частоту.
Это приведет к неточной разнице, поскольку частота ЦП не была постоянной между двумя запросами. Как это обходится операционной системой или программами, которые должны работать с дельтами времени, используя циклы ЦП?