Когда закончится время
Перейти к содержимому

Когда закончится время

  • автор:

Проблема 2038 года. Когда закончится время

Проблема 2038 года

Время и дату в компьютерных программах можно хранить по разному. Один из способов хранения даты — это использование стандарта POSIX (UNIX timestamp, Unix epoch).

В стандарте POSIX время записывается как количество секунд, прошедших с 0 часов 0 минут 0 секунд 1 января 1970 года по Всемирному времени (UTC). Для Unix-подобных операционных систем — это стандарт представления времени.

Дата в таком формате записывается как обычное целое число — число секунд. Очевидно, что чем позднее дата от даты 1 января 1970, тем больше секунд прошло с этой даты. Значит тем большее значение нужно сохранять в программах, использующие даты.

Например:
Для 01.01.1970 00:00:05 это число + 5 (сек).
Для 31.08.1970 12:10:33 это число + 20952633 (сек).
Для 19.01.2038 00:00:00 это число + 2147472000 (сек).
Для 19.01.2038 03:14:07 это число + 2147483647 (сек).

В старых программах (а иногда даже в новых) дата часто хранится в целочисленном 32-х битном знаковом формате — signed int. Это означает, что под число выделяется 32 бита:
0 0000000 00000000 00000000 00000000

  • Первый бит (выделен красным ), служит для определения знака числа. Значение 0 соответствует + , а значение 1 соответствует — ).
  • 31 бит (выделены синим ) для хранения значения самого числа.

Максимальное число, которое можно сохранить, используя 31 бит, это число 2147483647. В 32-х битном знаковом целочисленном формате записывается оно следующим образом:
0 1111111 11111111 11111111 11111111
В POSIX это число соответствует дате 19.01.2038 03:14:07. Как видим, это и есть «роковое» 19 января 2038 года.

Представление числа в знаковом 32 битном формате

Что произойдет 19 января 2038

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

Что будет внутри программ

Рассмотрим, что именно произойдет внутри программ. Числа больше 2147483647 не влезают в 31-бит.

Например, для числа 2147483647+1= 2147483648 нужно уже 32 бита. Это число записывается в двоичной системе, как единица в старшем разряде и 31 ноль:
1 0000000 00000000 00000000 00000000
Для 32-х битного типа signed integer — это число соответствует числу: −2147483648. Как было сказано выше, 1 в первом разряде обозначает отрицательное число.

Получается, что числа больше 2147483647 уже нельзя записать в 31 бит, но так как у нас есть еще один бит для хранения знака, программа запишет эти числа в память, но в программе они будут трактоваться как отрицательные числа.

Происходит как бы зацикливание числа. Если говорить о количестве секунд, увеличивающихся на 1, то они достигают значения 2147483647, а потом переходят в отрицательную область: −2147483648, −2147483647, −2147483646 и т.д. В программах такие числа будут трактоваться как 1970-й или 1901-й год (зависит от реализации).

Как это повлияет на работу программ

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

Например, если в табличных данных используется сортировка по времени, а для новых данных оно будет трактоваться, как отрицательное число, то эти данные будут трактоваться как старые данные, и сортировка будет нарушена.

Или, например, если программа очищает, какие-нибудь данные спустя определенное время, то при неверной трактовки времени, могут быть удалены еще актуальные данные.

Получается, что, чем больше работа программа зависит от времени, хранимого 32-х битном типе signed integer, то тем серьезнее могут быть последствия.

Так ли все серьезно

И да и нет. На самом деле — да!

Современные 64-х разрядные системы не подвержены данное проблеме, поэтому на них она никак не повлияет.

Для существующих 32-разрядных программ и систем уже выпущено множество патчей для исправления данной проблемы. Например, Microsoft, как он утверждает, уже обнаружил и исправил проблемы в 32-х разрядных версиях Windows.

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

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

Проблема 2038

Поэтому, если не предпринимать никаких действий, то последствия проблемы 2038 года могут от смешных до катастрофических.

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

Select a country or region

Copyright © 2023 Apple Inc. All rights reserved.

  • Internet Service Terms
  • Apple Music & Privacy
  • Cookie Warning
  • Support
  • Feedback

Select a country or region

Africa, Middle East, and India

Asia Pacific

Europe

Latin America and the Caribbean

  • Anguilla
  • Antigua and Barbuda
  • Argentina (Español)
  • Bahamas
  • Barbados
  • Belize
  • Bermuda
  • Bolivia (Español)
  • Brasil
  • Virgin Islands, British
  • Cayman Islands
  • Chile (Español)
  • Colombia (Español)
  • Costa Rica (Español)
  • Dominica
  • República Dominicana
  • Ecuador (Español)
  • El Salvador (Español)
  • Grenada
  • Guatemala (Español)
  • Guyana
  • Honduras (Español)
  • Jamaica
  • México
  • Montserrat
  • Nicaragua (Español)
  • Panamá
  • Paraguay (Español)
  • Perú
  • St. Kitts and Nevis
  • Saint Lucia
  • St. Vincent and The Grenadines
  • Suriname
  • Trinidad and Tobago
  • Turks and Caicos
  • Uruguay (English)
  • Venezuela (Español)

The United States and Canada

  • Canada (English)
  • Canada (Français)
  • United States
  • Estados Unidos (Español México)
  • الولايات المتحدة
  • США
  • 美国 (简体中文)
  • États-Unis (Français France)
  • 미국
  • Estados Unidos (Português Brasil)
  • Hoa Kỳ
  • 美國 (繁體中文台灣)

О конце времен. Может ли время закончиться?

Когда мы говорим «время закончилось» или «время истекло«, то имеем в виду окончание времени какого-то процесса. После этого процесса будут и другие, позже. Но может ли быть так, что «позже» не будет? Может ли закончиться само время?

Конечно, мы могли бы придумать игрушечную вселенную, где время бы было бы обрезано по какому-то моменту, например, 24 февраля. Однако, это математически не элегантно, более того, в специальной теории относительности нет единого момента времени — он зависит от наблюдателей. Обрубки непрерывных функций, сингулярности производных выглядят очень некрасиво и искусственно.

С другой стороны, по направлению в прошлое (Большой Взрыв) время обрывается, то есть было время, когда времени не было. Есть много космологических моделей Большого Взрыва, и все они стараются избавиться от сингулярности, сделать физические величины непрерывными. Об этом в отдельной статье.

Итак, если такое возможно в прошлом, то можем ли мы соорудить элегантный конец времен в будущем?

Расстояние в нашем псевдо-евклидовом пространстве определяется как:

Принимая естественное для натуральных единиц значение скорости света c=1, получаем:

Знак минус перед временем делает наше пространство трехмерным псевдо-евклидовым со временем. Если бы вместо минуса был бы плюс, то это было бы четырехмерное евклидово пространство без времени. Так, а что если мы превратим одно в другое плавно?

Пусть K плавно со временем меняется от -1 до +1. Так, так, я уже слышу возмущенные голоса. Рекурсии нет — K будет меняться по направлению «вверх» — как рисуют обычно «песочные часы» в диаграммах пространства времени Минковского.

Там, где K станет положительным, и пространство станет евклидовым, это будет уже просто направлением. И да, внимательный читатель заметил, что такое пространство, хоть и является локально псевдо-евклидовым (K<0) или евклидовым (K>0), глобально искривлено. Но что почувствует наблюдатель в такой вселенной?

Итак, на этой картинке внизу K= -1. Световые конусы, как и положено, расположены под углом 45 градусов. Мировая линия наблюдателя показана красным, близкая звезда зеленым, и далекая — синим. Далее K растет (по модулю — уменьшается), нужно больше t, чтобы покрыть то же расстояние. То есть скорость света как бы уменьшается. Поэтому световые конусы будут все уже и уже. (на самом деле световые конусы еще и изгибаются на больших расстояниях).

Совсем вверху пропадает из виду синяя звезда (свет от нее уже не успеет дойти до K=0), и позже и зеленая. Так выглядит мир с точки зрения птицы (bird’s view в терминологии Макса Тегмарка) — То есть мы видим вселенную с точки зрения архитектора, Бога, эмулятора вселенных итд. А как ее видит внутренний наблюдатель (frog’s view в терминологии Макса Тегмарка)?

Так как локально законы физики не меняются, то наблюдатель локально ничего не заметит. А вот сигналам к удаленным объектам будет все дольше и дольше идти. Однако, так как наблюдатель по прежнему считает c=1, то он придет к выводу о «расширении вселенной», все объекты становятся все дальше и дальше. Причем, вселенная расширяется с ускорением. Ближе к концу даже планеты и атомы. Хотя стоп, это же уже описано в сценарии Big RIP! Из Вики:

  • За миллиард лет до Большого разрыва распадутся скопления галактик.
  • Примерно за 60 млн лет до Большого разрыва гравитация станет слишком слабой, чтобы удерживать галактики. Распадётся и наша галактика.
  • За три месяца до Большого разрыва Солнечная система станет гравитационно несвязанной.
  • За 30 минут до Большого разрыва разрушится Земля.
  • За 10 −9 с (1 нс) до Большого разрыва разрушатся атомы.

Английская вики добавляет: «At the time the Big Rip occurs, even spacetime itself would be ripped apart and the scale factor would be infinity» — так это как раз то, что происходит при K=0

Читатель опять-таки может возразить, что я обещал гладкость и отсутствие сингулярности. Однако, несмотря на катастрофу для жителей вселенной, для Bird’s view все плавно, K просто переходит через ноль, и потом (whatever it means), уже в четырехмерном евклидовом пространстве, все предметы (точнее, их остатки) оказываются на своих местах, совсем недалеко.

Такая сингулярность называется координатной. Схожую природу имеет сингулярность на горизонте черной дыры — многие величины там (замедление времени например) уходят в бесконечноcть, однако все решается заменой координат (например, на систему ‘свободно падающего в черную дыру дождя’)

А как готовитесь к Рагнареку вы?

Цифровой конец света. Компьютерам по всему миру может не хватить чисел

Freepik

Специалисты предупреждают, что компьютеры по всему миру перестанут работать в 2038 году. Все из-за того, что на устройствах с 32-битной системой закончатся числа, и они больше не смогут измерять время. Впрочем, схожую проблему прогнозировали еще в 2000 году, но ничего не произошло.

Проблема 2038 года

По сообщениям RT, компьютерный мир может столкнуться с глобальной проблемой в 2038 году. Если быть точнее, то 19 января 2038 года в 03:14:07 по Гринвичу устройства, использующие 32-битную систему, перестанут верно отсчитывать время. Дело в том, что система перерабатывает каждую дату в двоичный код, но эту не сможет, потому что ей не хватит чисел.

Компьютеры и другие устройства, работающие на ОС Windows, Android, Macintosh, считают время с 1 января 1970 года в секундах внутри 32-битного значения. Данное значение вмещает в себя только определенное количество цифр и дальше расшириться не может. Соответственно 19 января 2038 года внутри системы просто не окажется необходимого числа, чтобы записать наступление 2 147 483 648-й секунды. Это вызовет сбой в устройствах и приведет к их обнулению, то есть они начнут отсчитывать время вновь с 1970 года.

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

Еще один яркий случай был на YouTube, когда клип Gangnam Style от Psy стал набирать рекордное число просмотров. Счетчик не был запрограммирован на такие цифры, поэтому перестал работать на отметке 2 147 483 647 просмотров. Google пришлось срочно переписывать систему, и теперь счетчик может доходить до цифры превышающую девять триллионов.

Масштаб проблем

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

Разумеется, к 2038 году многие компании и организации могут обновить системы, совершив переход из 32-битной системы в 64-битную, что отложит «проблему 2038 года» еще на 290 миллиардов лет. Проблема заключается в том, что чем больше лет проходит, тем больше появляется программ, сайтов и пользователей. Невозможно покрыть все сферы. Нельзя забывать о том, что это коснется не только компьютеров, но и в целом оборудования на заводах, энергетических станциях и других местах. Все придется модернизировать.

«Это непростая проблема, потому что сложность этой среды за последние двадцать лет резко возросла. Программ стало больше. Пользователей тоже», — заметил в разговоре с «360» российский предприниматель в сфере информационных технологий, искусственного интеллекта, разработки программного обеспечения, управления проектами, генеральный директор компании «Ашманов и партнеры» Игорь Ашманов.

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

Как решить проблему

Решение проблемы лежит на поверхности. Как уже было сказано ранее, большинство компаний просто переходят на 64-битную систему отсчета времени. К тому же за 20 лет многие устройства, работающие на 32-битной системе, попросту устареют и будут заменены.

По словам Вакулина, в Windows с этой проблемой уже разобрались.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *