Tempo Unix e escrita ISO 8601
Unidade fora do SI · grandeza: um instante como número inteiro de segundos desde 1970
A dezanove de janeiro de 2038, às três horas catorze minutos e sete segundos de tempo universal, um contador de segundos com trinta e dois bits chegará a 2 147 483 647 — o maior número que é capaz de conter. O impulso seguinte levantará o bit mais alto, e essa mesma palavra binária passará a ler-se como negativa: os relógios que guardam o tempo justamente por esta contagem encontrar-se-ão não em 2038, mas em dezembro de 1901. Curiosidade de um futuro distante não é — um autómato industrial ou um contador de água serve mais tempo do que os doze anos que restam.
A contagem está armada do modo mais simples: os segundos correm seguidos desde a meia-noite do primeiro de janeiro de 1970, e um dia contém nela sempre exatamente 86 400 segundos. É essa mesma simplicidade a fonte das duas particularidades. Por um lado, do número decorre no instante uma data do calendário e vice-versa, de modo que todo o registo de acontecimentos, toda a base de dados e todo o sistema de ficheiros guardam o tempo por ele. Por outro, um segundo intercalar não se pode exprimir em tal contagem de todo, o que significa que, apesar do nome, não numera segundos mas dias com as suas frações, e é na verdade uma função linear da escrita UTC e não um contador do tempo decorrido.
01 · Definição
O tempo Unix é o número de segundos decorridos desde a meia-noite do primeiro de janeiro de 1970 em tempo universal coordenado, supondo que cada dia contenha exatamente 86 400 segundos. A escrita ISO 8601 enuncia o mesmo de outro modo: por data do calendário, hora do dia e indicação do desvio face ao meridiano de origem, com os campos a correrem estritamente do grosso ao fino.
A ressalva dos 86 400 segundos não é um pormenor, mas o mais essencial da definição. Um segundo intercalar, anunciado pelo serviço da rotação terrestre, a contagem não o pode acolher, e por isso no instante da inserção o sistema ou repete duas vezes um só e mesmo valor, ou atrasa o relógio. Daí decorre algo importante: a diferença de dois números unix não é o número de segundos realmente decorridos entre dois acontecimentos se entre eles caiu uma inserção — a discrepância com a escala atómica chegou já a vinte e sete segundos.
O limite, em contrapartida, não depende da definição mas da largura do armazenamento. Trinta e dois bits com sinal dão como maior valor 2 147 483 647, que cai a dezanove de janeiro de 2038; o incremento seguinte põe o bit mais alto a um e torna o número negativo, atirando o relógio para treze de dezembro de 1901. Sessenta e quatro bits empurram a fronteira duzentos e noventa e dois mil milhões de anos para diante, mas os nanossegundos inteiros nesses mesmos sessenta e quatro bits esgotam-se já em 2262.
A escrita segundo a norma resolve outra tarefa — o intercâmbio e não o armazenamento — e por isso nela pesam coisas que o número não tem de todo: o desvio horário, o separador entre data e hora, e a regra de que a igual comprimento de cadeia a ordem lexicográfica coincide com a cronológica. É justamente esta última propriedade que fez do formato o fundamento da ordenação em nomes de ficheiro e registos.
Conduza o tempo com o cursor e veja o registo encher-se: os bits acendem-se da direita para a esquerda, e enquanto o mais alto, o do sinal, permanece escuro, o número é positivo e a data cresce. Assim que o contador passa 2 147 483 647, o bit mais alto acende-se a vermelho, o número inteiro torna-se negativo e o relógio salta para 1901.
A reta verde é a escala atómica, onde cada segundo é deveras um segundo. A escalonada vermelha é o tempo Unix, que a cada inserção entrega duas vezes uma só e mesma marca, pelo que a linha estaca no lugar. A discrepância ascende já a vinte e sete segundos e cresce, e por isso a contagem serve para uma data do calendário, mas não para medir durações na física.
02 · Conversão
Introduza uma marca temporal ou uma data
Entre todos os múltiplos da contagem — segundos, milissegundos, micro- e nanossegundos — as conversões são exatas, visto que só diferem por um fator. Aproximada é uma única linha: a conversão para a escala atómica exige saber quantos segundos intercalares se acumularam até ao instante dado.
A análise de uma cadeia normalizada fá-la a ficha na escrita alargada com a letra Z; a forma básica sem separadores está remetida para os ajustes finos.
O problema do ano 2038 não está na norma, mas no equipamento e no código antigo: marcas de trinta e dois bits assentam no firmware dos contadores, nos autómatos industriais, nos formatos de sistemas de ficheiros e nas bases de dados onde o campo já está declarado com quatro bytes. Mudar o tipo nas fontes é bastante fácil; percorrer milhões de aparelhos instalados nos doze anos que restam é uma tarefa do mesmo género que a que se pôs antes do ano 2000.
| Valor | Nota | ||
|---|---|---|---|
| {u} | {name} | {value} | {note} |
03 · Ordens de grandeza
escala logarítmica: do segundo ao limite dos sessenta e quatro bits04 · Instrumentos de medição
Com que se marca um acontecimento no tempo
Um chip à parte, com pilha, que mantém a contagem enquanto o aparelho está desligado. Guarda em regra não uma marca unix, mas os campos do calendário em separado, e a largura do seu campo de ano é a sua própria, de modo que nas placas antigas a conversa sobre 2038 começa pela pergunta de até que ano conta o próprio chip.
O protocolo NTP traz o relógio de uma máquina ao tempo comum com precisão de poucos milissegundos, e é ele também que avisa de uma inserção com um sinalizador próprio um dia antes. Fronteira própria tem também, e chega mais cedo: a contagem corre desde 1900 em trinta e dois bits sem sinal e transbordará em fevereiro de 2036.
Num registo a marca escreve-se ou como número, ou como cadeia segundo a norma, e o segundo é preferível por uma só razão: em cadeias de igual comprimento a ordem alfabética coincide com a cronológica, de modo que as entradas se ordenam sem analisar a data. Precisamente por isso o formato se espalhou muito para lá da informática.
A prontidão de um aparelho para o ano 2038 só se pode ensaiar de um modo: adiantar-lhe o relógio para lá da fronteira fatídica e ver o que acontece aos registos, aos certificados e ao cálculo de intervalos. Assim se acharam já falhas na faturação, nos sistemas de controlo de acesso e nos prazos de validade das chaves, onde uma data futura se forma por adição e transborda muito antes da própria fronteira.
05 · Regras de escrita
Do grosso ao fino, e sempre com o desvio
A norma exige ordem decrescente dos campos, quatro algarismos do ano, o hífen como separador da data e a letra T antes da hora; o desvio horário indica-se ou pela letra Z para o meridiano de origem, ou como mais-menos horas e minutos. A marca unix escreve-se como número inteiro sem separação de milhares, e o múltiplo deve sempre precisar-se, já que um fator de mil separa os segundos dos milissegundos e pelo tamanho do número confundem-se com facilidade.
A primeira escrita lê-se de modo diferente em países diferentes e é por isso inadmissível no intercâmbio de dados. A segunda omite tanto o separador como o desvio, de sorte que o instante fica indeterminado num dia para cada lado. A terceira perde os zeros iniciais, pelo que as cadeias deixam de se ordenar alfabeticamente — e é justamente por essa propriedade que o formato é apreciado. A quarta iguala a contagem unix à escala atómica, quando entre elas medeiam vinte e sete segundos de inserções acumuladas.
06 · Unidades vizinhas
Ao lado estão todas as contagens armadas segundo o mesmo princípio, mas desde outro início: o tempo NTP desde 1900, a data juliana desde o meio-dia do ano 4713 antes da nossa era, a escala do sistema de satélites desde janeiro de 1980. Diferem apenas pela época e pela unidade, e por isso convertem-se subtraindo uma constante.
segundos com sinal
o seu limite cai já em 2036
segundos intercalares contados com honestidade
De entre as fichas do Simetrium estão ao lado a data juliana, de onde vem a constante de conversão, as escalas UTC, TAI e UT1, que explicam os segundos intercalares desaparecidos, segundo como unidade da contagem, e o bit, cuja largura é o que fixa o limite.
07 · Secção histórica
Uma época escolhida por falta de bits
No primeiro manual do Unix o tempo contava-se em sessenta avos de segundo desde o início de 1971, e em trinta e dois bits tal contagem continha apenas uns dois anos. Esgotavam-se tão depressa que a época teria de ser deslocada em cada edição do sistema, e abandonaram-se as frações de segundo em favor das inteiras.
Ao passarem a segundos inteiros, os criadores ganharam uma reserva de cento e trinta e seis anos e puderam escolher o início por comodidade e não por necessidade. Tomou-se o primeiro de janeiro de 1970 — a data redonda mais próxima no passado, até à qual os registos de máquina de todo o modo não chegavam — e desde então não foi mudada uma única vez, embora o sistema tenha sido reescrito de raiz mais de uma vez.
A Organização Internacional de Normalização reduziu a um os formatos nacionais divergentes e pôs na sua base uma regra simples: os campos vão do grosso ao fino, todos com zeros iniciais. O efeito lateral revelou-se mais importante do que o propósito — tais cadeias ordenam-se como números, e o formato espalhou-se por nomes de ficheiro, registos e protocolos de intercâmbio.
Os sistemas de secretária e de servidor passaram a sessenta e quatro bits há muito, e aí a fronteira está empurrada para lá de todo o horizonte razoável. O perigo ficou noutro lado: no firmware de instrumentos com vinte anos de vida útil, em formatos de ficheiro onde o campo está declarado com quatro bytes, e em cálculos de prazos futuros, que transbordam já hoje mal se somem quinze anos à data presente.
Uma contagem que, apesar do nome, não conta segundos
A definição do tempo Unix soa a contagem de segundos, mas a exigência de 86 400 segundos redondos por dia faz dela outra coisa: uma função linear da escrita UTC e não uma medida do tempo decorrido. De cada vez que o serviço da rotação terrestre anuncia uma inserção, a contagem tem de repetir duas vezes um só e mesmo valor ou saltar para trás, e à diferença de duas marcas perde-se justamente esse segundo. Em meio século acumularam-se vinte e sete perdas destas, e por isso nas tarefas que pedem uma duração verdadeira toma-se a escala atómica e não esta.
A segunda particularidade não está de todo na definição, mas no modo de armazenamento, e isso faz dela o único limite do nosso catálogo que não é fixado nem pela natureza nem por convenção, mas pela largura de uma palavra de máquina. A data juliana nunca acaba, porque é um número; o tempo Unix acaba a dezanove de janeiro de 2038, porque é um campo de quatro bytes. A diferença entre uma grandeza e a sua representação ocupa em regra pouco os metrologistas, e aqui é justamente ela que decide tudo.
Catálogo · unidades de medida
Uma ficha para cada grandeza
Sete unidades de base do SI, vinte e duas derivadas com nome próprio e grandezas fora do sistema sem as quais nem a técnica nem o calendário funcionariam.