language:ruen

До смерти 32-битных систем осталось

Until the death of 32-bit systems remaining

О чём этот сайт?

Проблема 2038 года в вычислительной технике — ожидаемые сбои в программном обеспечении накануне 19 января 2038 года. Данная проблема затронет программы и системы, в которых используется представление времени по стандарту POSIX (UNIX-время), которое представляет собой количество секунд, прошедшее с полуночи 1 января 1970 года. Такое представление времени — это стандарт для Unix-подобных операционных систем (из-за повсеместного использования языка Си).

Сейчас значение Unix timestamp равно .

В чём проблема?

В старых 32-битных системах (до середины 1990-х) используется тип данных time_t для хранения секунд в виде signed int (32-битного целого со знаком). Самая поздняя дата, которая может быть представлена таким форматом в стандарте POSIX — это 03:14:07, вторник, 19 января 2038 года по Всемирному времени (UTC).

Более позднее время заставит такое поле данных стать отрицательным, как бы закольцевав таким образом время (поскольку отрицательное число может быть воспринято программами как время в 1970 или 1901 году, в зависимости от реализации). В результате любые расчёты, включающие дату позже 19 января 2038 года, могут привести к сбою программы либо к ошибочным вычислениям.

Для проблемы 2038 года не существует простого решения для существующих комбинаций операционных систем и прикладного программного обеспечения. Изменение определения типа time_t на 64 бита нарушит бинарную совместимость программ, существующих хранимых данных и всего другого, использующего представление времени в бинарном виде. А приведение time_t в целое без знака может нарушить работу программ, которые вычисляют разницу во времени.

Что подвержено этой проблеме?

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

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

Любая система, использующая структуры данных, содержащие 32-битные представления времени, представляет риск. Степень риска зависит от характера отказа.

Стоит ли боятся этой проблемы?

Нет. В большинстве операционных систем для 64-битных архитектур уже используется 64-битное представление целого в time_t. Переход на такие архитектуры уже происходит, и ожидается, что он будет завершён к 2038 году.

Использованные материалы

What is this site?

The Year 2038 problem in computing technology - expected failures in software on the eve of January 19, 2038. This problem will affect the programs and systems that use the presentation view according to the POSIX standard (UNIX-time), which is the number of seconds passed from midnight on January 1, 1970. Such a presentation of time is a standard for UNIX-like operating systems (due to the ubiquitous use of the C language).

Now the UNIX timestamp value is .

What is the problem?

In the old 32-bit systems (until the mid-1990s), the time_t data type is used to store seconds in the form of signed int (32-bit integer with the sign). The most late date, which can be represented by this format in POSIX Standard - is 03:14:07, Tuesday, January 19, 2038 for World Time (UTC).

Later time will cause such a field to become negative, as if looping the time in this way (since a negative number can be interpreted by programs as time in 1970 or 1901, depending on the implementation). As a result, any calculations that include a date later than January 19, 2038 may cause the program to crash or cause erroneous calculations.

For the year 2038 problem, there is no universal solution for existing combinations of operating systems and application software. Changing the definition of the time_t type to 64 bits will break the binary compatibility of programs, existing stored data, and anything else that uses a binary representation of time. And casting time_t to an unsigned integer can break programs that compute the time difference.

What is affected by this problem?

Many data structures that are used today have 32-bit time presentations built into their structure. The complete list of these data structures is almost impossible to compile, but there are well-known data structures that have a UNIX time problem:

Examples of systems using data structures that may contain 32-bit presentations of the time include:

Any system that uses data structures containing 32-bit time represents the risk. The degree of risk depends on the nature of the failure.

Should I be afraid of this problem?

No. Most operating systems for 64-bit architectures already use a 64-bit representation of the integer in time_t. The transition to such architectures is already underway, and is expected to be completed by 2038.

Used materials