stringtranslate.com

Системное время

Команда даты Unix

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

Системное время измеряется системными часами , которые обычно реализуются как простой подсчет количества тиков , прошедших с некоторой произвольной начальной даты, называемой эпохой . Например, системы Unix и POSIX -совместимые кодируют системное время (« время Unix ») как количество секунд, прошедших с начала эпохи Unix 1 января 1970 года 00:00:00 UT , за исключением високосных секунд . Системы, реализующие 32- и 64-разрядные версии API Windows , такие как Windows 9x и Windows NT , предоставляют системное время как SYSTEMTIME , представленное как значение год/месяц/день/час/минута/секунда/миллисекунды, так и FILETIME , представленное как подсчет количества 100-наносекундных тиков с 1 января 1601 года 00:00:00 UT , как исчисляется в пролептическом григорианском календаре .

Системное время может быть преобразовано в календарное время , что является формой, более подходящей для человеческого понимания. Например, системное время Unix 1 000 000 000 секунд с начала эпохи преобразуется в календарное время 9 сентября 2001 г. 01:46:40 UT . Библиотечные подпрограммы , которые выполняют такие преобразования, могут также иметь дело с корректировками для часовых поясов , летнего времени (DST), дополнительных секунд и настроек локали пользователя . Библиотечные подпрограммы также обычно предоставляются для преобразования календарного времени в системное время.

Многие реализации, которые в настоящее время хранят системное время как 32-битные целые значения, будут страдать от надвигающейся проблемы 2038 года . Эти значения времени будут переполняться («исчерпывать биты») после окончания эпохи их системного времени, что приведет к программным и аппаратным ошибкам . Этим системам потребуется некоторая форма исправления, аналогичная усилиям, необходимым для решения более ранней проблемы 2000 года . Это также будет потенциально гораздо более серьезной проблемой для существующих форматов файлов данных , которые содержат системные временные метки, хранящиеся как 32-битные значения.

Другие измерения времени

Тесно связано с системным временем время процесса , которое является подсчетом общего времени ЦП, потребляемого исполняющимся процессом . Его можно разделить на пользовательское и системное время ЦП, представляющее время, потраченное на выполнение пользовательского кода и кода ядра системы соответственно. Время процесса представляет собой подсчет инструкций ЦП или тактовых циклов и, как правило, не имеет прямой корреляции со временем стены .

Файловые системы отслеживают время создания, изменения и/или доступа к файлам, сохраняя временные метки в блоке управления файлами (или inode ) каждого файла и каталога .

История

Большинство персональных компьютеров первого поколения не отслеживали дату и время. К ним относятся системы, работающие под управлением операционной системы CP/M , а также ранние модели Apple II , BBC Micro и Commodore PET и другие. Дополнительные периферийные платы , включавшие чипы часов реального времени с резервным питанием от встроенной батареи, были доступны для IBM PC и XT , но IBM AT был первым широко доступным ПК, который был оснащен аппаратным обеспечением даты/времени, встроенным в материнскую плату . До широкого распространения компьютерных сетей большинство персональных компьютеров, которые отслеживали системное время, делали это только относительно местного времени и не учитывали различные часовые пояса .

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

Микроконтроллеры, работающие во встроенных системах (таких как Raspberry Pi , Arduino и других подобных системах ), не всегда имеют внутреннее оборудование для отслеживания времени. Многие такие системы контроллеров работают без знания внешнего времени. Те, которым требуется такая информация, обычно инициализируют свое базовое время при перезагрузке, получая текущее время из внешнего источника, например, с сервера времени или внешних часов, или предлагая пользователю вручную ввести текущее время.

Выполнение

Системные часы обычно реализуются как программируемый интервальный таймер , который периодически прерывает работу ЦП, который затем начинает выполнять процедуру обслуживания прерывания таймера. Эта процедура обычно добавляет один тик к системным часам (простой счетчик) и обрабатывает другие периодические задачи по обслуживанию ( вытеснение и т. д.) перед возвратом к задаче, которую ЦП выполнял до прерывания.

Получение системного времени

В следующих таблицах показаны методы получения системного времени в различных операционных системах , языках программирования и приложениях . Значения, отмеченные (*), зависят от системы и могут различаться в разных реализациях. Все даты указаны в виде дат григорианского или пролептического григорианского календаря .

Разрешение измерения времени реализацией не подразумевает ту же точность таких измерений. Например, система может возвращать текущее время как значение, измеренное в микросекундах, но на самом деле быть способной различать отдельные тики часов с частотой всего 100 Гц (10 мс).

Операционные системы

Языки программирования и приложения

Смотрите также

Примечания

  1. ^ ab В документации разработчиков Apple нет ясности относительно точности и диапазона CFAbsoluteTime/CFTimeInterval, за исключением документации CFRunLoopTimerCreate, которая ссылается на точность «не более миллисекунды». Однако похожий тип NSTimeInterval, по-видимому, является взаимозаменяемым и имеет указанную точность и диапазон.
  2. ^ abcd Стандартная библиотека C не определяет какое-либо конкретное разрешение, эпоху, диапазон или тип данных для значений системного времени . Библиотека C++ охватывает библиотеку C, поэтому она использует ту же реализацию системного времени, что и C.

Ссылки

  1. ^ Ральф Д. Браун (2000). "Int 0x1A, AH=0x00". Список прерываний Ральфа Брауна .
  2. ^ Ральф Д. Браун (2000). "Int 0x1A, AH=0x02". Список прерываний Ральфа Брауна .
  3. ^ Ральф Д. Браун (2000). "Int 0x1A, AH=0x04". Список прерываний Ральфа Брауна .
  4. ^ "Руководство по операционной системе CP/M Plus (CP/M версии 3.0)" (PDF) .
  5. ^ «Системные вызовы BDOS».
  6. ^ Ральф Д. Браун (2000). "Int 0x21, AH=0x2c". Список прерываний Ральфа Брауна .
  7. ^ Ральф Д. Браун (2000). "Int 0x21, AH=0x2a". Список прерываний Ральфа Брауна .
  8. ^ "Справочник по утилитам времени". Библиотека разработчика iOS . 2007.
  9. ^ "Справочник по утилитам времени". Библиотека разработчика Mac OS X. 2007.
  10. ^ ab "Time Utilities - Foundation". Документация для разработчиков Apple . Получено 6 июля 2022 г.
  11. ^ Рут Э. Гольденберг; Лоуренс Дж. Кена; Дениз Э. Дюма (1991). Внутреннее устройство и структуры данных VAX/VMS, версия 5.2. Цифровая пресса. ISBN 978-1555580599.
  12. ^ «Почему среда, 17 ноября 1858 года является базовым временем для OpenVMS (VAX VMS)?». Стэнфордский университет . 24 июля 1997 г. Архивировано из оригинала 24 июля 1997 г. Получено 8 января 2020 г.
  13. ^ ab "Справочное руководство по библиотеке времени выполнения VSI C для систем OpenVMS" (PDF) . VSI. Ноябрь 2020 г. . Получено 17.04.2021 .
  14. ^ "OpenVMS и 2038 год". HP . Получено 2021-04-17 .
  15. ^ ab z/Архитектурные принципы работы (PDF) . Покипси, Нью-Йорк: International Business Machines. 2007.
  16. ^ IBM намерена расширить диапазон дат для будущих систем за пределы 2042 года. z/Architecture Principles of Operation, (Покипси, Нью-Йорк: International Business Machines, 2007) 1-15, 4-45 по 4-47.
  17. ^ "Расширенные 64-битные значения времени". IBM . Получено 2021-04-18 .
  18. ^ Джонатан де Бойн Поллард. «32-битный интерпретатор команд». В OS/2 Warp 4 дата и время могут работать и после 2000 года, и даже после 2038 года, и фактически до 2079 года, что является пределом для часов реального времени OS/2 Warp 4.
  19. ^ abc "Свойство DateTime.Now". Microsoft Docs .
  20. ^ abc "Свойство DateTime.UtcNow". Документация Microsoft .
  21. ^ abc "Свойство DateTime.Ticks". Microsoft Docs .
  22. ^ «Поддержка даты и времени». Embarcadero Developer Network . 2013.
  23. ^ "System.SysUtils.Time". Embarcadero Developer Network . 2013.
  24. ^ "System.SysUtils.GetTime". Embarcadero Developer Network . 2013.
  25. ^ "System.SysUtils.Date". Embarcadero Developer Network'. 2013.
  26. ^ "System.DateUtils.Today". Embarcadero Developer Network . 2013.
  27. ^ "System.DateUtils.Tomorrow". Embarcadero Developer Network . 2013.
  28. ^ "System.DateUtils.Yesterday". Embarcadero Developer Network . 2013.
  29. ^ "System.SysUtils.Now". Embarcadero Developer Network . 2013.
  30. ^ "System.SysUtils.DayOfWeek". Embarcadero Developer Network . 2013.
  31. ^ "System.SysUtils.CurrentYear". Embarcadero Developer Network . 2013.
  32. ^ abc "Время и коррекция времени в Erlang". www.erlang.org .
  33. ^ "XL2000: Ранние даты в компоненте электронных таблиц Office отличаются от Excel". Служба поддержки Microsoft . 2003. Архивировано из оригинала 24 октября 2007 г. В компоненте электронных таблиц Microsoft Office значение 0 соответствует дате 30 декабря 1899 г., а значение 1 соответствует 31 декабря 1899 г. ... В Excel значение 0 соответствует 0 января 1900 г., а значение 1 соответствует 1 января 1900 г.
  34. ^ "SYSTEM_CLOCK". Руководство и справочник разработчика Intel Fortran Compiler 19.0 . 29 апреля 2019 г. Получено 23 июля 2019 г.
  35. ^ "SYSTEM_CLOCK — Функция времени". Компилятор GNU Fortran . Получено 27 октября 2011 г.
  36. ^ ab "System.nanoTime() method". Java Platform, Standard Edition 6: API Specification . 2015 . Получено 23 июля 2019 .
  37. ^ "Clock.systemUTC() и другие методы". Java Platform, Standard Edition 8: API Specification . 2014. Получено 15 января 2015 .
  38. ^ "JSR-310 Java Time System". Java Platform, Standard Edition 8: API Specification . 2014. Получено 15 января 2015 .
  39. ^ "Справка по Matlab".
  40. ^ ab "NSTimeInterval - Foundation". Документация для разработчиков Apple .
  41. ^ Дуглас Вегшейлд, Р. Шертлер и Яркко Хиетаниеми, «Time::HiRes». CPAN — Комплексная сеть архивов Perl . 2011 . Проверено 27 октября 2011 г.
  42. ^ Джеймс Бритт; Neurogami. "Time class". Ruby-Doc.org: Справка и документация по языку программирования Ruby . Скоттсдейл, Аризона . Получено 27 октября 2011 г.
  43. ^ Yugui (18 августа 2010 г.). "Ruby 1.9.2 выпущен". Новая версия 1.9.2 почти совместима с 1.9.1, за исключением следующих изменений: ... Время переписано. Исправлена ​​ошибка с 2038 годом.
  44. ^ «MIT/GNU Scheme 9.2: 15.5 Дата и время».
  45. ^ «Использование командлета Get-Date». Microsoft Docs . 22 октября 2009 г. Получено 23 июля 2019 г.
  46. ^ «Совет недели по Windows PowerShell — форматирование дат и времени». Microsoft Docs . 26 мая 2010 г. Получено 23 июля 2019 г.

Внешние ссылки