Sunday, Feb 05th

Last update12:13:00 PM GMT

Вы находитесь на: FreeBSD Службы ядра Корректировка времени

Корректировка времени

Часто желательно на всех машинах сети поддерживать одно и то же время. Можно также поддерживать более точное время, чем возможно от базовых часов процессора. Например, без труда доступно оборудование, прослушивающее ряд радиостанций, рассылающих в Соединенных Штатах синхронизирующие сигналы UTC. Когда процессы на различных машинах приходят к соглашению относительно общего времени, им нужно изменить часы процессора своего хоста, чтобы согласовать их с сетевым значением времени. Одной из возможностей является изменение системного времени на сетевое с помощью системного вызова settimeofday. К сожалению, системный вызов settimeofday приведет к смещению времени назад на машинах, часы которых спешат. Обратное смещение времени может запутать пользовательские программы (такие, как make), которые ожидают неизменного возрастания времени.

Чтобы избежать этой проблемы, система предоставляет системный вызов adjtime [Mills, 1992]. Системный вызов adjtime принимает разницу во времени (положительную или отрицательную) и изменяет частоту приращения времени на 10 процентов быстрее или медленнее до тех пор, пока время не будет скорректировано. Операционная система осуществляет ускорение путем приращения глобального времени на 11 000 микросекунд для каждого тика, а замедление - путем приращения глобального времени на 9000 микросекунд для каждого тика. Независимо от этого, время возрастает монотонно и пользовательские процессы, зависящие от порядка времени модификации файлов, не затрагиваются. Однако изменения времени, требующие для корректировки десятков секунд, повлияют на программы, измеряющие временные интервалы с помощью повторных вызовов gettimeofday.


Похожие:
Еще по теме:
Советуем прочитать:

Сейчас 23 гостей онлайн

Реклама на сайте: