Хотя ответ Джоэля верен, в действительности все немного сложнее.
Первое, что необходимо принять во внимание (и я собираюсь сосредоточиться только на ПК), это то, что в компьютере есть несколько часов, и каждый из них имеет свое собственное использование.
Наиболее популярными и простыми для понимания являются часы реального времени . Это в основном чип с простыми часами внутри. Они обычно имеют тот же тип кварцевых кристаллов, что и стандартные часы, и обычно имеют батарею для отсчета времени, когда компьютер выключен. Проблема с ними в том, что они не очень точны, как видно из ссылок Syntech. Кристалл 32,768 кГц слишком медленный для любого хронометража в современных системах, процессоры которых находятся в мегагерцах и гигагерцах.
Здесь мы подходим к следующему пункту: есть внутренние часы, используемые для точного измерения времени и обратного отсчета.
Простые часы - это программируемый интервальный таймер . Что он делает, это ждет определенное количество времени, а затем отправляет прерывание в ЦП. Когда процессор получает прерывание, он останавливает все, что он делает, и стремится к задаче, которая сгенерировала прерывание. Таким образом, процессор не должен постоянно проверять, что-то сделано. Вместо этого он может сосредоточиться на других работах, и PIT сообщит ему, когда работа будет завершена. PIT использует тактовый источник 1,193182 МГц и поэтому намного точнее, чем простой RTC.
Следующая интересная система измерения - счетчик меток времени . Идея заключается в том, что мы можем получить гораздо более точные измерения времени, используя источник тактовой частоты процессора, который использует различные системные таймеры. PIT имеет тактовую частоту 1,193182 МГц, но даже у самых ранних процессоров x86 тактовая частота была намного выше. Таким образом, у нас будет таймер, который обновляется после каждого установленного количества циклов процессора. В то время процессоры имели очень стабильные часы, и использование TSC было хорошим способом для точного измерения времени. Однако использование TSC приносит ряд проблем. Разные процессоры имеют разную частоту тиков и измеряют время на разных скоростях. Позже, по мере развития технологии, мы получили современные процессоры, которые могут менять частоту. Это серьезная проблема, поскольку частота процессора больше не постоянна, и мы не можем использовать его для измерения времени.
И именно поэтому у нас сейчас есть высокоточные таймеры событий . HPET использует тактовую частоту 10 МГц и поэтому является более точным, чем PIT. С другой стороны, его источник синхронизации не зависит от часов процессора, и его можно использовать для измерения времени, даже если часы процессора меняются. В отличие от PIT, который работает как обратный отсчет, HPET измеряет время с момента включения компьютера и сравнивает текущее время с временем, когда необходимо действие.
Есть и другие источники времени, доступные для компьютеров, о которых, я считаю, нужно упомянуть. Некоторые компьютеры подключены к атомным часам и могут использовать их для точного измерения времени.
Менее дорогой и гораздо более распространенный вариант - использовать внешний источник времени для калибровки внутренних источников времени компьютера. Например, приемники GPS могут использоваться для обеспечения высокоточных измерений времени, потому что спутники GPS имеют свои внутренние атомные часы.
Другой вариант, который встречается реже, чем приемник GPS, - это использование специального радиоприемника, который декодирует информацию о времени от временных станций, например, DCF77. Такие временные станции имеют свои собственные высокоточные источники времени и передают свои выходные данные по радио. Поскольку радиоволны распространяются со скоростью света, задержка часто незначительна.