Насколько точно время эпохи в наносекундах?

Я хотел бы узнать, насколько точным является время, которое отображается при вводе даты +% s% N в терминале.

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

2
задан 1 July 2014 в 05:42

2 ответа

это представляет момент, который я поразил, входят в наносекундах?

Хорошо, который не мог быть. Много вещей происходят между Вашим хитом на , Входят и вывод команды:

  • Ваша оболочка интерпретирует команду и выполняется /bin/date.
  • ядро создает процесс, дает ему PID, устанавливает его родителя, дает некоторое адресное пространство, регистрирует процесс, и так далее...
  • /bin/date программа выполняется. Это, вероятно, требует, чтобы некоторая память была выделена. Это называет несколько связанных со временем стандартных программ ядра, которые заставляют процесс несколько раз чередоваться (точно так же, как любой другой Вы сказали бы...) между непривилегированным режимом и привилегированным режимом.
  • вывод команды отправляется в stdout, и Вы видите его в своем терминале, hourray!

В основном, Вы могли поместить его этот путь:

  • Вы совершаете нападки Входят .
  • [несколько передач миллисекунд, посмотрите выше]
  • date, программа называет волшебные стандартные программы в time.h, переключаясь в привилегированный режим для каждого из них. Здесь, ОС получает текущее время от аппаратных часов.
  • [несколько передач миллисекунд, посмотрите выше]
  • , Вы получаете вывод.

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

можно было пойти еще больше путем добавления:

  • Вы получаете вывод.
  • Ваше глазное мигание (100-400 миллисекунд говорит Wikpedia).
  • Вы на самом деле видите вывод.
  • Ваш мозг интерпретирует и понимает его.

Добавление еще нескольких миллисекунд к количеству.

3
ответ дан 1 July 2014 в 05:42

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

Если мы снова используем схемы из того сообщения:

Вход

      +-------------------+               +-------------+
----->| terminal emulator |-------------->| application |
      +-------------------+               +-------------+
keypress                    character or
                           escape sequence

Вывод

+-------------+               +-------------------+
| application |-------------->| terminal emulator |
+-------------+               +-------------------+
               character or
               escape sequence

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

You hit enter --> `date` is executed -> queries current time

Снова, каждый из вышеупомянутых шагов (и другой, меньшие, выполненные strace date понять), занимают время так не, возвращенное время не будет точным моментом, который Вы поражаете, Входят.

К тому времени, когда результат печатается на Вашем терминале, время (в точности наносекунды) изменится снова. То, что Вы видите, который был возвращен системой когда date спрошенный.

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

2
ответ дан 1 July 2014 в 05:42

Другие вопросы по тегам:

Похожие вопросы: