El año 2020 es significativo para Unix: al inicio del año, el sistema operativo original cumplió 50 años. El tiempo Unix, conocido también como «epoch time», es la cantidad de segundos transcurridos desde el 1 de enero de 1970. Pero, ¿qué preocupa a los desarrolladores del núcleo con respecto al medio siglo de Unix?

Aunque algunos de los primeros desarrollos de Unix preceden el inicio oficial de su «época», el 1 de enero de 1970 sigue siendo el punto cero en el tiempo de POSIX. Por lo tanto, a partir del 1 de enero de 2020, la plataforma oficialmente cumplió exactamente 50 años.
Tiempo Unix frente al tiempo humano
Desde el punto de vista del tiempo humano, 50 años es un largo período. Desde la perspectiva del tiempo Unix, no hay nada especial en 50 años, y 43 años serían igualmente significativos. Los sistemas Unix (incluyendo Linux) almacenan valores de fecha y hora como la cantidad de segundos transcurridos desde 1970-01-01 00:00:00 UTC, usando un registro de 32 bits. Para determinar cuántos segundos han pasado desde entonces y, por lo tanto, el valor actual del tiempo Unix, se puede ejecutar el comando:
$ date +%s
1576883876
El argumento %s después del comando date establece la visualización de la fecha y hora actuales como la cantidad de segundos desde el inicio de 1970-01-01.

¿Qué fecha máxima pueden almacenar los sistemas Unix?
Para entender cuántos tiempos puede contener un sistema Unix, es necesario evaluar la capacidad de un campo de 32 bits. Esto se puede calcular así:
$ echo '2^32' | bc
4294967296
Sin embargo, dado que Unix permite el almacenamiento de números negativos, un bit se reserva para el signo, reduciendo así el valor del tiempo a:
$ echo '2^31' | bc
2147483648
Y dado que la numeración Unix comienza en 0, esto significa que tenemos 2,147,483,648 valores, pero el más grande es 2,147,483,647 — el valor de fecha y hora Unix no puede exceder este número. Así como un odómetro en un automóvil no puede marcar más de 999,999 kilómetros — si agregas 1, el valor se reinicia.
¿Cuántos segundos dura un año?
El número de segundos en un año se puede calcular de la siguiente manera:
$ expr 24 * 60 * 60 * 365
31536000
En un año bisiesto se añade un día más:
$ expr 24 * 60 * 60 * 366
31622400

¿Cómo muestra Unix su 50º cumpleaños?
El 1 de enero de 2020 a las 12:00 AM será el tiempo 1577836800. El cálculo se complica un poco porque se deben tener en cuenta los años bisiestos. Desde el inicio de la era Unix ha habido 12 de esos años, comenzando en 1972 y terminando en 2016. Es decir, han pasado 38 años normales.
Así es como se ve el comando expr para contar los segundos transcurridos en los últimos 50 años:
$ expr 24 * 60 * 60 * 365 * 38 + 24 * 60 * 60 * 366 * 12
1577836800
O así, teniendo en cuenta los cálculos realizados anteriormente:
$ expr 31536000 * 38 + 31622400 * 12
1577836800
Este método de representación del tiempo hizo que los sistemas Unix fueran resistentes al problema Y2K, del cual las personas se preocuparon a fines de 1999, temiendo que el cambio de milenio pudiera dañar los sistemas informáticos. Las dificultades resultaron ser mucho menores de lo esperado. De hecho, solo las aplicaciones que registraban años en formato de dos dígitos enfrentaron el problema de restablecimiento de fechas. Muchos desarrolladores realizaron trabajo adicional para asegurar que sus aplicaciones no se verían afectadas por el problema Y2K.
¿Cuándo enfrentará Unix problemas?
Dificultades similares se esperan para los sistemas Unix no antes de 2038, cuando las fechas almacenadas en el formato descrito anteriormente superen el espacio de 32 bits. Aún quedan 18 años, pero los desarrolladores del kernel ya están trabajando para evitar fallos inminentes.
El problema del 2038 a veces se menciona como el problema Y2K38. Si no se resuelve antes del martes 19 de enero de 2038, después de esta fecha, los sistemas podrían pensar que es el año 1901. Una forma de abordar este problema es pasar a una representación de fecha y hora de 64 bits. Algunos creen que esto será mucho más complicado de lo que parece.
De todos modos, aún es pronto para entrar en pánico. Lo realmente importante hoy es el 50.º aniversario de los sistemas Unix, que son considerados uno de los sistemas operativos más importantes en la historia.
Fuente: 3dnews.ru
