Как функция time() указывает текущее время и даже когда компьютер был выключен раньше?

как мы можем работать с таймерными сделками с миллисекундами (0,001), как мы можем разделить второй, как мы хотим? как мы могли бы справиться со вторым самим собой?

Ответ 1

http://computer.howstuffworks.com/question319.htm

На вашем компьютере (а также в другом гаджеты), аккумулятор питает чип называемый чипом Real Time Clock (RTC). RTC - это, по существу, кварцевые часы который работает все время, независимо от того, компьютер имеет мощность. Батарея управляет этими часами. Когда компьютер сапоги, часть процесса - запросите RTC, чтобы получить правильное время и дата. Маленькие кварцевые часы, такие как это может продолжаться от пяти до семи лет от небольшой батареи. Тогда это время замены батареи.

Ответ 2

На вашем ПК будет аппаратные часы, питаемые от батареи, чтобы он продолжал тикать, даже когда компьютер выключен. ПК знает, как быстро его часы работают, поэтому он может определить, когда идет секунда.

Изначально ПК не знает, в какое время (то есть он только начинает отсчет с нуля), поэтому нужно сказать, что такое текущее время - это можно установить в BIOS и сохраняется в CMOS или может быть получен через в Интернете (например, путем синхронизации с часами на NIST).

Ответ 3

Некоторые подсказки, а также дополнительная информация:

1) Компьютер считывает часы реального времени во время загрузки и использует это для установки внутренних часов

2) С этого момента компьютер использует только часы процессора - он не перечитывает RTC (обычно).

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

4) Величина дрейфа часов может составлять порядка секунд в день (десятки или сотни секунд в месяц).

5) Большинство компьютеров могут подключаться к серверу времени (через Интернет) периодически reset своим часам.

6) Использование сервера времени может повысить точность до нескольких десятков миллисекунд (обычно). Мой компьютер обновляется каждые 15 минут.

Ответ 4

Компьютеры знают время, потому что, как и вы, у них есть цифровые часы, на которые они смотрят время от времени.

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

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

Внутри компьютер может определить время в миллисекундах, микросекундах или иногда даже в наносекундах. Однако это не совсем точно, и два компьютера рядом друг с другом будут иметь разные представления о времени в наносекундах. Но это может быть полезно.

В будущем компьютер может установить будильник на несколько миллисекунд, и обычно это делает так, что он знает, когда перестать думать о своей программе электронной почты и потратить некоторое время на размышления о своем веб-браузере. Затем он устанавливает еще один сигнал тревоги, чтобы он мог вернуться к вашему электронному письму через несколько миллисекунд позже.

В качестве программиста вы также можете использовать этот объект, например, вы можете установить лимит времени на уровне игры, используя "таймер". Или вы можете использовать таймер, чтобы рассказать, когда вы должны поместить следующий кадр анимации на дисплей - возможно, 25 раз в секунду (т.е. каждые 40 миллисекунд).

Ответ 5

Чтобы ответить на главный вопрос, часы BIOS имеют батарею на материнской плате, как говорит ответ Цзянь. Это не дает времени, когда машина выключена.

Чтобы ответить на мой второй вопрос, вы можете получить второе значение из миллисекундного значения, выполнив целочисленное деление на 1000, например:

second = (int) (milliseconds / 1000);

Если вы спрашиваете, как мы можем получить время с такой точностью, посмотрите на ответ Эстебана... кристалл кварца вибрирует в определенный период времени, скажем, 0,00001 секунд. Мы просто создаем схему, которая учитывает вибрации. Когда мы достигли 100000 вибраций, мы объявляем, что секунда прошла и обновила часы.

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

Ответ 6

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

Чтобы быть более точным, часы обычно представляют собой кварцевый кристалл, который oscilates на данной частоте; некоторые общие тактовые частоты процессора составляют 33,33 и 40 МГц.

Ответ 7

Абсолютное время архаично измеряется с использованием 32-разрядного счетчика секунд с 1970 года. Это может вызвать "проблему 2038", где она просто переполняется. Следовательно, 64-битные API времени, используемые на современных платформах Windows и Unix (включая MacOS на базе BSD).

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