O ano de 2020 é marcante para o Unix: no início do ano, o sistema operacional original completou 50 anos. O tempo Unix, conhecido também como "data de época", é a quantidade de segundos que se passaram desde 1 de janeiro de 1970. Mas o que realmente preocupa os desenvolvedores do núcleo em relação ao aniversário de meio século do Unix?

Embora alguns dos primeiros desenvolvimentos do Unix tenham ocorrido antes do início oficial da sua "época", 1 de janeiro de 1970 continua a ser o ponto zero no tempo do POSIX. Portanto, a partir de 1 de janeiro de 2020, a plataforma completou exatamente 50 anos.
Tempo Unix contra o tempo humano
Do ponto de vista do tempo humano, 50 anos é um longo período. Do ponto de vista do tempo Unix, 50 anos não tem nada de especial, e 43 anos seriam igualmente significativos. Os sistemas Unix (incluindo Linux) armazenam valores de data e hora como o número de segundos desde 1970-01-01 00:00:00 UTC, utilizando uma representação de 32 bits. Para determinar quantos segundos se passaram desde então e, portanto, o valor atual do tempo Unix, pode-se executar o comando:
$ date +%s
1576883876
O argumento %s após o comando date especifica a exibição da data e hora atuais como o número de segundos desde o início de 1970-01-01.

Qual é a data máxima que os sistemas Unix podem armazenar? Unix?
Para entender quanto tempo um sistema Unix pode conter, é necessário avaliar a capacidade do campo de 32 bits. Isso pode ser calculado da seguinte forma:
$ echo '2^32' | bc
4294967296
No entanto, como o Unix permite armazenar números negativos, um bit é reservado para o sinal, reduzindo, assim, o valor do tempo para:
$ echo '2^31' | bc
2147483648
E como a numeração Unix começa em 0, isso significa que temos 2.147.483.648 valores, mas o maior deles é 2.147.483.647 — o valor da data e hora Unix não pode exceder esse número. Assim como o hodômetro de um carro não pode marcar mais de 999.999 quilômetros — adicionar 1 deve zerar o valor.
Quanto dura um ano em segundos?
O número de segundos em um ano pode ser calculado da seguinte forma:
$ expr 24 * 60 * 60 * 365
31536000
Em um ano bissexto, adiciona-se mais um dia:
$ expr 24 * 60 * 60 * 366
31622400

Como o Unix representa seu 50º aniversário?
Em 1 de janeiro de 2020, à meia-noite, será o tempo 1577836800. O cálculo é um pouco mais complicado, pois é necessário levar em consideração os anos bissextos. Desde o início da época Unix, houve 12 desses anos, começando em 1972 e terminando em 2016. Portanto, passaram-se 38 anos comuns.
Assim é como o comando expr se parece para contar os segundos dos últimos 50 anos:
$ expr 24 * 60 * 60 * 365 * 38 + 24 * 60 * 60 * 366 * 12
1577836800
Ou assim, levando em consideração os cálculos anteriores:
$ expr 31536000 * 38 + 31622400 * 12
1577836800
Esse método de registro de tempo tornou os sistemas Unix imunes ao problema Y2K, que preocupou as pessoas no final de 1999, temendo que a transição para o ano 2000 pudesse danificar os sistemas computacionais. As dificuldades foram muito menores do que o esperado. De fato, apenas aplicações que registravam anos em formato de dois dígitos enfrentaram o estouro de datas. Muitos desenvolvedores realizaram trabalho adicional para garantir que suas aplicações não seriam afetadas pelo problema Y2K.
Quando o Unix enfrentará problemas?
Dificuldades semelhantes aguardam os sistemas Unix não antes de 2038, quando as datas armazenadas no formato descrito acima ultrapassarem o espaço de 32 bits. Faltam ainda 18 anos, mas os desenvolvedores do kernel já estão trabalhando para evitar falhas futuras.
O problema de 2038 é às vezes chamado de problema Y2K38. Se não for resolvido até terça-feira, 19 de janeiro de 2038, após essa data, os sistemas podem pensar que é o ano de 1901. Uma das maneiras de resolver esse problema é mudar para a representação de data e hora de 64 bits. Alguns acreditam que isso será muito mais complicado do que parece.
De qualquer forma, ainda é cedo para entrar em pânico. E o que realmente importa hoje é o 50º aniversário dos sistemas Unix, que são reconhecidos como um dos sistemas operacionais mais importantes da história.
Fonte: 3dnews.ru
