¿Por qué el tiempo de Unix comienza en 1970-01-01?

Respuestas:

28

No habría sabido la respuesta, excepto que google estaba allí para mí:

Desde aquí (necesita suscripción gratuita):

Linux sigue la tradición establecida por Unix de contar el tiempo en segundos desde su "cumpleaños" oficial, llamado "época" en términos informáticos, que es el 1 de enero de 1970.

Se puede encontrar una explicación más completa en este artículo de Wired News . Explica que los primeros ingenieros de Unix eligieron esa fecha arbitrariamente, porque necesitaban establecer una fecha uniforme para el comienzo del tiempo, y el Día de Año Nuevo, 1970, parecía más conveniente.

Hanan N.
fuente
5

Unix no nace en 1970.

La época de Unix es la medianoche del 1 de enero de 1970. Es importante recordar que este no es el "cumpleaños" de Unix : las versiones aproximadas del sistema operativo existían en la década de 1960. En cambio, la fecha se programó en el sistema en algún momento a principios de los años 70 solo porque era conveniente hacerlo, según Dennis Ritchie, uno de los ingenieros que trabajó en Unix en Bell Labs desde su inicio.

Danny A
fuente
Conveniente en aquel entonces, inconveniente para los desarrolladores de todo el mundo desde entonces.
Chris Halcrow
3
@ChrisHalcrow: ¿qué hubieras elegido como tiempo 0 si fueras dmr? ¿Y cómo es la elección inconveniente para los desarrolladores? El inconveniente es porque medir el tiempo en términos "humanos" (años, meses, días, horas / minutos / segundos, zonas horarias, horario de verano) es complicado, no porque se haya elegido un instante (arbitrario) $ t = 0 $.
NickD
@NickD, buen aviso para una explicación y buen punto! Sin embargo, elegiría 00:00:00 de CE 0, ya que estoy seguro de que haría las cosas un poco más fáciles de calcular. Por favor, explique qué es 'dmr'? Además, irónicamente, el hecho de que el OP requiera una explicación de por qué se eligió esta fecha muestra que es intrínsecamente confuso para alguien entender el uso del 01/01/70 como fecha de referencia.
Chris Halcrow
2
@ChrisHalcrow: dmr = Dennis Ritchie. ¿Calculó el número de segundos desde su origen elegido hasta hoy? ¿Cuántos bits requiere? El PDP-11 tenía registros y palabras de 16 bits, pero le permitía agrupar dos registros y dos palabras para crear registros de 32 bits y palabras dobles para algunas operaciones. Eso le da +/- 68 años desde su tiempo 0 (o +136 años si su tiempo no fue firmado, pero dmr eligió firmar). Su elección puede ser un poco desconcertante la primera vez que la ve, pero es una decisión bastante obvia dado lo anterior ...
NickD
1
@NickD - ¡gran explicación! Esto debería ser parte de la respuesta aceptada: ¿por qué no mover su comentario allí y podemos eliminar el nuestro desde aquí?
Chris Halcrow
1

Me gusta la pregunta :-)

Permítanme intentar responderlo (por supuesto fuente: internet)

Unix Time está representado por un número entero de 32 bits (un entero) que puede ser positivo o negativo (con signo). Unix se desarrolló originalmente en los años 60 y 70, por lo que el "inicio" de Unix Time se estableció el 1 de enero de 1970 a la medianoche GMT (hora media de Greenwich): a esta fecha / hora se le asignó el valor Unix Time de 0. Esto es lo que se sabe como la época de Unix.

Un entero con signo de 32 bits puede representar números enteros entre -2147483648 y 2147483647. Dado que el tiempo Unix comienza en 0, los valores negativos del tiempo Unix retroceden en el tiempo desde la época y los números positivos avanzan en el tiempo. Esto significa que el tiempo de Unix abarca desde el valor de tiempo de Unix de -2147483648 o 20:45:52 GMT el 13 de diciembre de 1901 hasta el valor de tiempo de Unix de 2147483647 o 3:14:07 GMT el 19 de enero de 2038. Estas fechas representan el comienzo, el prehistoria y el final de Unix Time.

El final de Unix Time ocurrirá el 19 de enero de 2038 03:14:07 GMT. El 19 de enero de 2038 03:14:08 GMT, todas las computadoras que todavía usan Tiempo Unix de 32 bits se desbordarán. Esto se conoce como el "problema del año 2038". Algunos creen que este será un problema más significativo que el "problema del año 2000". La solución para el problema del año 2038 es almacenar Unix Time en un entero de 64 bits. Esto ya está en marcha en la mayoría de los sistemas operativos de 64 bits, pero es posible que muchos sistemas no se actualicen para 2038.

Nikhil Mulley
fuente
55
Solo un párrafo de esto realmente aborda la cuestión, y es algo impreciso (la época fue originalmente en 1971; se trasladó más tarde)
Michael Mrozek
1
Ver también en.wikipedia.org/wiki/Unix_time
Nikhil Mulley
1
Eso es correcto Michael. De Wikipedia: Las primeras versiones del tiempo Unix tenían un número entero de 32 bits que se incrementaba a una velocidad de 60 Hz, que era la velocidad del reloj del sistema en el hardware de los primeros sistemas Unix. Como resultado, el valor 60 Hz todavía aparece en algunas interfaces de software. La época también difería del valor actual. La primera edición del Manual del Programador de Unix, fechada el 3 de noviembre de 1971, define el tiempo de Unix como "el tiempo transcurrido desde las 00:00:00, 1 de enero de 1971, medido en sexagésimas de segundo".
Nikhil Mulley
@Nikhil Todavía no entiendo por qué 1970, ¿solo porque Unix se desarrolló esa vez? ¿Por qué no 1960? o diferente mes diferente día?
Templario
@Nikhil o realmente no importa? Solo el primer mes, el primer día se ve mejor y se hizo en 1971, ¿entonces 1970 también se vería mejor?
Templario