Problema do ano 2038

Futura falha nos computadores

O problema do ano 2038, efeito 2038, bug 2038, problema Y2K38 ou falha de Gangnam Style (em referência ao problema Y2K) refere-se ao problema previsto para ocorrer no ano de 2038 nos sistemas informatizados (programas de computador) que utilizam a representação de tempo no padrão POSIX/IEEE 1003, em que a data é calculada através do número de segundos ignorando os segundos bissextos desde 1 de janeiro de 1970.[1] [2]

Problema do ano 2038
Problema do ano 2038
Ilustra o reinício da contagem da data às 03:14:08 do dia 19 de janeiro de 2038.
Outros nomes problema Y2K38, efeito 2038, bug 2038, bug Y2K38
Projeção Global
Data 19 de janeiro de 2038

A representação POSIX é de uso padrão nos sistemas operacionais do tipo Unix, afetando a maioria dos sistemas, pois grande parte deste software foi desenvolvido na linguagem C. Na maioria dos sistemas com processadores do tipo 32 bits, o tipo de dados time t, utilizado para armazenar esta contagem de segundos, é um inteiro de 32 bits do tipo signed (considera o sinal). O último registro de tempo que pode ser representado por este formato no padrão POSIX, é 03:14:07 na terça-feira 19 de janeiro de 2038 (UTC).[3] Após este momento a data será representada por um número decimal negativo que, dependendo da implementação, corresponderá ao ano 1970 ou 1901 (prevê-se a data 13 de dezembro de 1901).[3] Este valor para a data corrente certamente resultará em erros de cálculo e de funcionamento na maior parte dos programas em execução pelo sistema presentes principalmente em instituições financeiras e governamentais.[3]

Solução editar

Não há maneira simples de resolver este problema para os sistemas existentes. Alterar a definição do time_t para 64 bits pode quebrar a compatibilidade binária de softwares, dados persistidos e de qualquer sistema que manipule datas representadas no formato binário. Alterar o time_t para um inteiro de 32 bits unsigned (não considera o sinal) pode alterar vários programas que trabalham com diferenças de tempo.

A maioria dos sistemas que suportam a arquitetura de 64 bits já suporta o time_t de 64 bits. A migração para esta arquitetura já está em andamento e muitos esperam que ela esteja completa até 2038. Porém, milhões de sistemas de 32 bits foram instalados até o ano de 2006, muitos em sistemas embarcados, e é muito incerto se eles serão totalmente substituídos até 2038. Apesar de, normalmente, os sistemas serem atualizados num prazo de 18-24 meses, os sistemas embarcados podem operar sem alterações por toda a vida do sistema que controlam. A utilização do time_t de 32 bits foi codificada em alguns formatos de arquivo, como o ZIP, o que significa que o problema pode permanecer por um longo período após a expiração da vida útil das máquinas envolvidas.

A utilização de valores de 64 bits introduz um novo "corte" na data em aproximadamente 290 bilhões de anos[nota 1], num domingo em 4 de dezembro de 292.277.026.596.[4] Claramente este problema não é uma questão imediata.[3]

Ver também editar

Notas

Referências

  1. «The Open Group Base Specifications Issue 6 IEEE Std 1003.1, 2004 Edition (definition of epoch)». IEEE and The Open Group. The Open Group. 2004. Consultado em 30 de julho de 2010 
  2. «Vídeo de Gangnam Style quebrou YouTube e obrigou Google a mudar sistema». TechTudo. 2014. Consultado em 4 de agosto de 2023 
  3. a b c d «O que é o "efeito 2038" ou "efeito Y2K38"?». Target HD. Consultado em 10 de maio de 2021 
  4. Diomidis Spinellis (2006). Code quality: the open source perspective. Col: Effective software development serie in Safari Books Online illustrated ed. [S.l.]: Adobe Press. p. 49. ISBN 0321166078 

Ligações externas editar