Как компьютеры отслеживают время?

69

Как компьютеры могут сообщать правильное время и дату каждый раз?

Всякий раз, когда я закрываю компьютер (выключаю его), все соединения и процессы внутри останавливаются. Почему, когда я снова открываю компьютер, он показывает точное время? Разве компьютер не выключается полностью, когда я выключаю его? Есть ли в нем еще какие-то процессы? Но как тогда мой ноутбук показывает правильное время, когда я вынимаю батарею (и, таким образом, принудительно останавливаю все процессы) и снова запускаю ее через несколько дней?

Татан
источник
3
Этот вопрос действительно по теме для этого сайта? Это кажется более подходящим для Super User для меня.
Илмари Каронен
3
@IlmariKaronen Похоже, это вопрос о «компьютерной архитектуре», если я правильно понимаю этот термин.
PyRulez

Ответы:

96

Компьютеры имеют «часы реального времени» - специальное аппаратное устройство (например, содержащее кристалл кварца) на материнской плате, которое поддерживает время. Он всегда включен, даже когда вы выключаете компьютер. Кроме того, материнская плата имеет небольшую батарею, которая используется для питания часового устройства, даже когда вы отключаете компьютер от питания. Батарея не вечна, но прослужит не менее нескольких недель. Это помогает компьютеру отслеживать время, даже когда компьютер выключен. Часы реального времени не нуждаются в большой мощности, поэтому они не теряют энергию. Если вы вытащите батарею часов в дополнение к извлечению основного аккумулятора и отсоединению кабеля питания, компьютер потеряет счетчик времени и попросит вас ввести время и дату при перезагрузке компьютера.

Чтобы узнать больше, смотрите Часы реального времени и батарею CMOS и Почему у моей материнской платы есть батарея .

Кроме того, на многих компьютерах, когда вы подключаете ваш компьютер к интернет-соединению, ОС будет искать сервер времени в сети и запрашивать сервер времени на текущее время. ОС может использовать это, чтобы очень точно установить локальные часы вашего компьютера. При этом используется сетевой протокол времени , также называемый NTP.

DW
источник
1
Может ли ОС установить время BIOS? Я имею в виду, что если я принудительно сбросил аппаратные часы, затем загрузился и подключился к NTP или сам установил часы, BIOS это распознает?
кот
1
Да. Изменение системного времени ОС устанавливает часы реального времени, то есть время BIOS. Внутренне часы просто отсчитывают количество секунд (или миллисекунд) с начала эпохи (обычно 1 января 1970 г., 00:00), поэтому они не выполняют большой работы и могут питаться от батареи размером с монету годами. Функции более высокого уровня в ОС выполняют преобразование этого числа в отображаемую дату / время.
Крис Нава
Кварцевый кристалл не является специальным аппаратным устройством, которое отслеживает время (хотя это один компонент).
user253751
1
@ tatan нет, телефон все время питается от батареи. Это практически то же самое, что вы можете включить компьютер, нажав кнопку питания, когда предполагается, что компьютер выключен (но не отключен от сетевой розетки).
Руслан
1
Я бы перефразировал последний абзац, меняя компьютеры на ОС. Любой ПК, который подключается к Интернету, может этого не делать, и наоборот - это задача ОС, а не ПК (подразумевается аппаратное обеспечение).
MatthewRock
13

Если вы извлечете аккумулятор на материнской плате, то компьютер не сможет определить время.

Это также касается мобильных телефонов. Если вы дадите телефону разрядиться, а затем не будете заряжать его более нескольких недель, он также «забудет о времени», поскольку небольшая вспомогательная батарея полностью разряжена, и часы реального времени не работают.

Вы можете попробовать включить старый мобильный телефон, если он у вас есть, и проверить его самостоятельно, чтобы убедиться, что он «забыл время».

Вот так выглядит аккумулятор. https://yandex.com/images/touch/search?text=mobo%20battery&source=tabbar

Я должен был купить один несколько раз, когда мой начал длиться меньше, чем за день. Мне приходилось настраивать часы каждый раз, когда я включал компьютер.

yoyo_fun
источник
3
Многие операционные системы теперь используют NTP (сетевой протокол времени) и могут использовать его для автоматического сброса при запуске, поэтому им фактически не нужны встроенные часы.
Джеймс Снелл
3
@JamesSnell Это, однако, испортит отметки времени в лог-файлах, а также в любом файле, измененном во время загрузки до запуска NTP.
kasperd
@kasperd - временные метки на самом деле не так важны, как раньше, поскольку многие системы используют другие метаданные (управление версиями). Посмотрите журналы загрузки из систем, в которых отсутствует RTC, таких как маршрутизаторы или Raspberry Pi, и они регистрируют время обновления (и что делать). Это может быть важнее в отключенных системах, но со временем это становится менее важным.
Джеймс Снелл
1
@JamesSnell У меня есть несколько одноплатных компьютеров, на которых установлена ​​стандартная операционная система x86, но у них нет RTC с батарейным питанием. В конце я заставил их запустить абсолютно минимальный сетевой стек из виртуального диска, чтобы запустить ntpdate до того, как будет получен доступ к диску.
Касперд
@JamesSnell Да, но ноутбуки и планшеты подключаются к Wi-Fi после загрузки (по крайней мере, большинство из них так делают), и у них нет подключения к Ethernet, поэтому батарея все еще используется почти на всех компьютерах. Кроме того, настольные компьютеры не всегда имеют Интернет. Некоторые люди закрывают свои маршрутизаторы ночью или просто не пользуются Интернетом все время, если они хотят играть в игры или смотреть фильм и не включают маршрутизатор. Не все хотят быть подключенными к интернету все время.
yoyo_fun
2

Когда вы запускаете Windows, он получает прямой доступ к памяти часов реального времени (RTC) и использует свои значения даты и времени для установки даты и времени компьютера. Таймер прерываний поддерживает время компьютера при работе Windows. Time Daemon в Windows запускается примерно один раз в час после запуска Windows. Time Daemon сравнивает время в Windows со временем в RTC. Если два раза больше, чем одна минута, Windows изменяет время и дату в соответствии с RTC. Вы не можете изменить временной интервал для запуска Time Daemon.

Если вы используете службу синхронизации времени, например, средство TimeServ.exe, входящее в комплект ресурсов Windows NT 4.0, оно обновляет время в Windows и RTC компьютера. Если служба времени Windows работает на компьютере под управлением Windows 2000, демон времени в Windows не может работать приблизительно один раз в час после запуска Windows.

Для получения дополнительной информации посетите эту ссылку: http://msdn2.microsoft.com/en-us/library/ms724936.aspxhttp://msdn2.microsoft.com/en-us/library/ms724942.aspx

Budhathoki Bijaya
источник
Интересно. Итак, как Windows определяет точное точное время (в микросекундах) для ответа на вызов из программы (например, time.time () в python) и как часто и как она обновляет свое текущее значение для времени?
Джакантербери