Postagens populares

terça-feira, 2 de junho de 2009

Sobre o BUG de 2038

Muitos já devem ter ouvido falar do BUG do milênio, ou BUG do ano 2000.

Houve um grande alarde na época. Não hoveram grandes problemas, em parte porque muitas pessoas no mundo todo se empenharam em atualizar os computadores potencialmente problemáticos, em parte porque o problema não era tão grande assim.

Bem, agora o problema é diferente e parece ser maior. Pelo menos eu vejo assim.

O BUG:

Sistemas UNIX utilizam uma convenção chamada "UNIX EPOCH" que data de 1 de janeiro de 1970. Deste modo, é utilizado um número inteiro para representar as datas em segundos a partir deste dia.

Ex.: a data de hoje (02/06/09 - 10:57AM) é desde o UNIX EPOCH: 1243951022

Bem, até aí tudo bem certo?

Errado!

Como a tendência é do número aumentar conforme a data se afasta de 1970, e, nos sistemas que armazenam o tempo em 32 bits signed integer (sem tradução) isto fará com que a data reinicie.
Ou seja, o maior valor de um inteiro para ser representado computacionalmente nestes sistemas é de 32 bits.

Ao alcançarmos a data 18 de Janeiro de 2038 ás 9:14:07 PM os computadores não terão mais capacidade de representar o EPOCH. Imagine todos os servidores e aparelhos conectados que utilizam datas para realizar tarefas: rádios, aeroportos, semáforos, alarmes e toda a "parafernália" tecnológica de que dependemos cada vez mais.

Ok! E agora!?

Bem, faltando 26 anos para a data, acredito que teremos bastante tempo para modificar este BUG, porém, já conhecido há muito tempo, até agora não houve um esforço muito grande para corrigi-lo, pelo menos até onde sei.


Muitos especialistas dizem que este BUG não é tão grave quanto o anterior, mas eu acredito que é sim pior pois as funções que se baseiam no EPOCH são largamente utilizadas por programadores no mundo todo, os sistemas baseados em UNIX e BSD(sim, o BSD também tem o mesmo BUG) ganham espaço a cada dia e nossa depêndencia da tecnologia cresce exponencialmente a cada dia.

É esperar para ver.


Ha!

2 comentários:

  1. Dae rapá! Cara, parabéns pelo blog. É sempre bom ver tuas postagens :)

    Estive pensando nesse problema ae e lembrei de umas aulas. Aí juntei com uns cálculos e tenho meu palpite:

    O epoch é representado por 32 bits nas arquiteturas de 32 bits. Hoje agente já vive com processadores de 32 e 64 bits. É o caso dos Intel Core e dos AMD Phenom e companhia.

    Bom, com 32 bits conta-se unsigned até 4 bilhóes aproximadamente, ou 2 elevado a potencia de 32.

    Com 64 bits agente vai até, cara, 2 elevado a 64. O inteiro vai ate aproximadamente 18 quinquilhões!

    Se os computadores e sistemas operacionais de 2038 estiverem todos a 64 ou mais bits, fica tudo postergado para muitos mais anos a frente.

    Ei, posso estar errado, mas é esse o meu palpite.

    Ha!

    Abraço, e continua mandando ae os posts.

    Fabricio

    ResponderExcluir
  2. Poxa, é uma grande honra pra mim fabricio saber que vc gasta tempo lendo meu blog, e sua opinião é muito importante e altamente confiável. Concordo com vc em partes, pois os softs legados que trabalham em 32 não conseguirão utilizar um signed integer compatível, eu não entendo muito bem disso, mas andei lendo e parece que haverão muitos problemas de incompatibilidade dentro dos SOs de 64 bits, corrija-me se eu estiver errado mas acho que é isso...

    valeu por comentar, sempre que puder faça que eu fico muito feliz!

    valeu fabricioOoOoo

    ResponderExcluir

Comenta aí galera, vamos debater os assuntos!

Magazine Luiza