quinta-feira, 5 de dezembro de 2019

BUG DO MILÊNIO — A HISTÓRIA SE REPETE (CONTINUAÇÃO)


UM EVENTO INIMAGINÁVEL EM UMA CENTENA DE ANOS TALVEZ SEJA INEVITÁVEL EM UM MILHÃO DE ANOS.

Anos-luz de evolução separam os chips Intel® Core™ atuais dos 286, 386 e 486 das décadas de 80/90. Raras vezes paramos para pensar nisso, mas, quando o fazemos, custa-nos acreditar que os monstruosos mainframes dos anos 1950 — que ocupavam prédios inteiros e tinham menos poder de processamento que uma calculadora de bolso teria dali a 30 anos — diminuíram de tamanho a ponto de ser levados no bolso, ao mesmo tempo em que seus recursos cresceram em progressão geométrica. 

O pool de sistemas usado pela NASA na missão Apollo 11 dispunha de 64 KB de RAM e processador com frequência de operação de 0,043 MHz. Isso corresponde a uma ínfima fração da capacidade de executar cálculos de qualquer smartphone xing-ling, e o que hoje é considerado "top de linha", "última geração", "estado da arte" e que tais não demora a se tornar "coisa do passado". E assim sucessivamente.

Existem processadores de diferentes tamanhos, capacidades e funcionalidades desenvolvidos, mas a maioria deles opera de forma parecida. Os primeiros modelos, de 16-bit, eram capazes de armazenar e acessar valores até 216 (equivalente a 65.539 números diferentes). As versões de 32-bit operam com 232 (= 4.294.967.295), mas é preciso tem em mente que essa capacidade é dividida de forma equânime para calcular o tempo e armazenar informações dos aplicativos do computador. Em outras palavras, cada uma das funções ocupa metade da capacidade do processador, razão pela qual um modelo baseado na arquitetura de 32-bit não é capaz de continuar contando o tempo depois que a contagem atinge 2.147.483.647 segundos . Já os processadores modernos, que equipam a maioria dos computadores atuais, são baseados no sistema de 64-bit, cujo limite é bem maior: 264 (18.446.744.073.709.551.616).

O bit (forma reduzida binary digit) é a menor unidade de informação que o processador é capaz de manipular, e pode representar apenas dois estados opostos — fechado/aberto, desligado/ligado, falso/verdadeiro, etc. , que, por convenção, são expressos pelos algarismos 0 e 1. Para economizar tempo e espaço, não vou descer a detalhes sobre esse assunto; quem quiser saber mais a respeito pode clicar aqui para acessar uma abordagem detalhada, mas em linguagem palatável.

Computadores fazem cálculos monstruosos usando o código binário, o que nos causa certa estranheza porque estamos habituados a usar a base decimal. Mas é possível escrever qualquer número inteiro usando a base binária, considerando que cada 1 ou 0 se refere a uma potência de 2 — o primeiro, a 20; o segundo, a 21, e assim por diante. O computador "vê" uma sequência de dígitos, multiplica cada potência de 2 (da esquerda para direita) por 0 ou 1 e chega a um número. A sequência 10, por exemplo, tem dois bits e equivale a 0x20 + 1x21. A sequência 111 tem três bits e equivale a 1x20 + 1x21 + 1x22. A sequência de 4 bits 1001 equivale ao número 9 (1x20 + 0x21 + 0x22 + 1x23), e assim por diante.

No que tange aos microchips (ou microprocessadores), os termos 32-bit e 64-bit se referem ao tamanho do registro — ou seja, do "mapa" onde o processador distribui os "endereços" dos dados de que precisa para operar. Como todos esses endereços apontam para a RAM — memória física do computador, onde tudo, do sistema operacional a um simples arquivo de texto, é carregado e processado —, CPUs de 32-bit, que só conseguem operar com 232 (ou 4.294.967.295 endereços diferentes), são incapazes de "enxergar" mais que 4 GB de RAM, independentemente da quantidade de memória fisicamente instalada na máquina

Chips de 64-bit operam com 264, sendo capazes de mapear mais de 17 bilhões de endereços na RAM e acessá-los de maneira mais rápida e eficiente. Vale lembrar, porém, que é o sistema operacional quem "diz ao computador como utilizar seus componentes", e um chip de 64-bit só exibirá todo seu poder de fogo se o sistema também for de 64-bit. Mas tenha em emente que um chip 64-bit suporta sistemas operacionais de 32-bit (embora não funcione em plena capacidade), mas chips 32-bit não suportam sistemas operacionais 64-bit; que apps de 64-bit só funcionarão se tanto o processador quanto o sistema forem de 64-bit, embora não haja problema algum em instalar aplicativos de 32-bit em máquinas com sistema operacional e processador 64-bit.

Observação: A Microsoft oferece versões de 64-bit do Windows desde a edição XP. Para saber se o seu sistema é de 32 ou 64-bits, dê um clique direito no botão Iniciar, clique em Sistema e, em Especificações do dispositivo, veja a resposta em Tipo de Sistema. Para obter informações adicionais sobre o processador e a configuração de hardware, baixe e instale o freeware CpuZ.

Voltando ao bug de 2038, desta vez o xis da questão é a capacidade limitada dos processadores de 32-bit de contar o tempo em segundos — um problema bem mais fácil de resolver que o do bug do milênio, como vermos mais adiante.

Considerando que computadores medem o tempo desde 1º de janeiro de 1970, às 3 horas, 14 minutos e 7 segundos de 19 de janeiro de 2038 eles chegarão ao limite de 2.147.483.647 segundos, e deverão parar de computar os segundos seguintes. Para continuar a contagem, os valores começarão a ser armazenados em uma contagem negativa, de -2.147.483.647 até zero, mas a maioria dos sistemas não conseguirá fazer isso e então simplesmente vai parar de funcionar ou, no melhor dos cenários, continuar funcionando, só que com a data incorreta.

Pare evitar que isso aconteça, a adequação dos dispositivos deverá ser feita até 2038. A maioria dos processadores comercializados atualmente é de 64-bit e o Windows dispõe de versões de 64-bit desde o início deste século. Muitos sistemas usados na operação de servidores (como o Unix) ainda são baseados na arquitetura de 32-bit, mas a lógica é que eles sejam substituídos nos próximos 19 anos. As máquinas que podem causar mais problemas são os chamados “sistemas embarcados”, que são usados em sistemas de transporte e outros aparelhos que devem ter longa durabilidade, como estabilizador de controle em carros, por exemplo. A principal preocupação deve ser com sistemas vitais para a infraestrutura, mas espera-se que os 19 anos que faltam sejam tempo suficiente para administradores e governantes se planejarem.