O bug do milênio “parte 2”

2038: o bug do milênio atacará novamente

Entre os grandes medos que pairavam a informática nos anos 90, o Bug do Milênio possuía lugar privilegiado na primeira fila. O emblemático problema aconteceria na passagem do ano de 1999 para 2000 em sistemas mais antigos, que traziam datas armazenadas com apenas dois dígitos finais.

O pânico foi tão grande que empresas e pessoas correram para atualizar seus softwares e hardwares, permitindo que as que vendiam serviços e equipamentos eletrônicos lucrassem uma pequena fortuna vendendo seus produtos.

Entretanto, o que se viu foram falhas pequenas, fáceis de serem corrigidas. O grande Bug do Milênio chegou e passou sem maiores problemas, e todo o pânico acabou por cair por terra, já que mísseis nucleares não foram lançados aleatoriamente, aviões continuaram nos céus e os sistemas seguiram funcionando sem nenhuma complicação.

 

Mais um à vista

Se você acha que todo o drama já passou, está muito enganado. Uma nova falha deve acontecer no ano de 2038, quando um novo bug pode causar erros em programas de computadores. Chamado de Bug do Milênio Unix, o Y2K38, Y2.038K ou S2G tem data marcada para o dia 19 de janeiro. Da mesma forma que a falha do ano 2000, esta também aparece na contagem de datas, trazendo dificuldades de cálculo a partir de 2038. O bug deve acontecer a todos os softwares desenvolvidos na linguagem C, ou seja, aqueles em que a data é calculada pelo número de segundos desde o dia 1 de janeiro de 1970, ao meio dia.

Essa data inicial conta com valor zero e, a partir dela, todos os outros valores de tempo são expressos em segundos. Ao subtrair quaisquer dois valores por esse sistema, o valor final é sempre a diferença entre esses mesmos dois números, facilitando a contagem e determinação entre dois momentos distintos no tempo.

No formato padrão de 4 bytes, usado por esses sistemas, o número máximo a que se podem chegar em números positivos é de 2.147.483.64 (03:14:07 pelo código UTC – Coordinate Universal Time), ou seja, a data de 19 de janeiro de 2038.

A partir daí, o tempo começa a ser armazenado em números negativos, algo que os sistemas devem interpretar como a data de 13 de dezembro de 1901 (curiosamente, uma sexta-feira 13), em vez da data real em que estaremos. O contador fica sem números usáveis e começa a contar do número máximo negativo, retornando novamente ao zero.

Como resolver

Diferente das correções necessárias em 2000, este problema é bem mais simples de resolver. No caso de sistemas bem escritos, basta programá-lo para uma nova versão, que utilize valores de 8 bytes para armazenar datas, transformar o tipo de datação de 32 bits para sistemas de 64 bits é uma alternativa que provou-se funcionar, uma vez que se utiliza de datas mais elásticas – no caso,  292 bilhões de anos no futuro.

Entretanto, a mudança de definição dos sistemas de 32 para 64 bits pode prejudicar a compatibilidade binária de softwares. Todavia, trocar sistemas para os que suportam a arquitetura de 64 bits (descartando o de 32 bits) deve acontecer antes de 2038, já que esses sistemas são cada vez mais comuns.

Existem alternativas para resolver a falha, entre elas a inclusão de armazenamento de datas em milissegundos ou microssegundos. Essa opção traz um mínimo de 300.000 anos antes que os números inteiros cheguem a uma contagem negativa. O que vale comentar é que esse problema não traz motivos para um pânico desenfreado, como aconteceu em 2000. Além de ser uma situação mais simples, o espaço de tempo para uma resolução é ainda maior, suficiente inclusive para que novas tecnologias surjam e não tragam maiores problemas para o armazenamento e contagem de data. Ou para os mais crédulos, basta lembrar que o mundo “acabara” no dia 21 de dezembro do ano que vem, que fica tudo resolvido.
Fontes : Project 2038 e The Year 2038 Bug (paginas em inglês).

Anúncios

Publicado em 3 de novembro de 2011, em Bugs & erros e marcado como , , , , . Adicione o link aos favoritos. Deixe um comentário.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

w

Conectando a %s

%d blogueiros gostam disto: