Tiempo Unix y escritura ISO 8601
Unidad fuera del SI · magnitud: un instante como número entero de segundos desde 1970
El diecinueve de enero de 2038, a las tres horas catorce minutos y siete segundos de tiempo universal, un contador de segundos de treinta y dos bits llegará a 2 147 483 647 — el mayor número que es capaz de contener. El siguiente pulso levantará el bit más alto, y esa misma palabra binaria se leerá ya como negativa: los relojes que llevan el tiempo justamente por esta cuenta se hallarán no en 2038, sino en diciembre de 1901. Curiosidad de un futuro lejano no lo es — un autómata industrial o un contador de agua sirve más tiempo que los doce años que quedan.
La cuenta está armada del modo más sencillo: los segundos corren seguidos desde la medianoche del primero de enero de 1970, y un día contiene en ella siempre exactamente 86 400 segundos. Es esa misma sencillez la fuente de sus dos peculiaridades. Por un lado, del número se sigue al instante una fecha del calendario y a la inversa, de modo que todo registro de sucesos, toda base de datos y todo sistema de archivos llevan el tiempo con él. Por otro, un segundo intercalar no puede expresarse en tal cuenta en absoluto, lo que significa que, pese a su nombre, no numera segundos sino días con sus fracciones, y es en verdad una función lineal de la escritura UTC y no un contador del tiempo transcurrido.
01 · Definición
El tiempo Unix es el número de segundos transcurridos desde la medianoche del primero de enero de 1970 en tiempo universal coordinado, suponiendo que cada día contenga exactamente 86 400 segundos. La escritura ISO 8601 enuncia lo mismo de otro modo: mediante fecha del calendario, hora del día e indicación del desfase respecto del meridiano de origen, con los campos yendo estrictamente de lo grueso a lo fino.
La salvedad de los 86 400 segundos no es un detalle, sino lo más esencial de la definición. Un segundo intercalar, anunciado por el servicio de la rotación terrestre, la cuenta no puede acogerlo, y por eso en el instante de la inserción el sistema o bien repite dos veces un solo y mismo valor, o bien atrasa el reloj. De ahí se sigue algo importante: la diferencia de dos números unix no es el número de segundos realmente transcurridos entre dos sucesos si entre ellos cayó una inserción — la discrepancia con la escala atómica ha llegado ya a veintisiete segundos.
El límite, en cambio, no depende de la definición sino de la anchura del almacenamiento. Treinta y dos bits con signo dan como mayor valor 2 147 483 647, que cae el diecinueve de enero de 2038; el incremento siguiente pone el bit más alto en uno y vuelve negativo el número, arrojando el reloj al trece de diciembre de 1901. Sesenta y cuatro bits empujan la frontera doscientos noventa y dos mil millones de años adelante, pero los nanosegundos enteros en esos mismos sesenta y cuatro bits se agotan ya en 2262.
La escritura según la norma resuelve otra tarea — el intercambio y no el almacenamiento — y por eso en ella pesan cosas que el número no tiene en absoluto: el desfase horario, el separador entre fecha y hora, y la regla de que a igual longitud de cadena el orden lexicográfico coincide con el cronológico. Es justamente esta última propiedad la que hizo del formato el fundamento de la ordenación en nombres de archivo y registros.
Lleve el tiempo con el deslizador y vea llenarse el registro: los bits se encienden de derecha a izquierda, y mientras el más alto, el del signo, permanece oscuro, el número es positivo y la fecha crece. En cuanto el contador pasa de 2 147 483 647, el bit más alto se enciende en rojo, el número entero se vuelve negativo y el reloj salta a 1901.
La recta verde es la escala atómica, donde cada segundo es de verdad un segundo. La escalonada roja es el tiempo Unix, que en cada inserción entrega dos veces una sola y misma marca, por lo que la línea se detiene en el sitio. La discrepancia asciende ya a veintisiete segundos y crece, y por eso la cuenta sirve para una fecha del calendario, pero no para medir duraciones en física.
02 · Conversión
Introduzca una marca de tiempo o una fecha
Entre todos los múltiplos de la cuenta — segundos, milisegundos, micro- y nanosegundos — las conversiones son exactas, puesto que solo se diferencian por un factor. Aproximada es una sola línea: la conversión a la escala atómica exige saber cuántos segundos intercalares se han acumulado hasta el instante dado.
El análisis de una cadena normalizada lo hace la ficha en la escritura extendida con la letra Z; la forma básica sin separadores está llevada a los ajustes finos.
El problema del año 2038 no está en la norma, sino en el equipo y en el código viejo: marcas de treinta y dos bits se asientan en el firmware de los contadores, en los autómatas industriales, en los formatos de sistemas de archivos y en las bases de datos donde el campo ya está declarado con cuatro bytes. Cambiar el tipo en las fuentes es bastante fácil; recorrer millones de aparatos instalados en los doce años que quedan es una tarea del mismo género que la que se planteó antes del año 2000.
| Valor | Nota | ||
|---|---|---|---|
| {u} | {name} | {value} | {note} |
03 · Órdenes de magnitud
escala logarítmica: del segundo al límite de los sesenta y cuatro bits04 · Instrumentos de medida
Con qué se marca un suceso en el tiempo
Un chip aparte con pila que lleva la cuenta mientras el aparato está apagado. Guarda por lo común no una marca unix, sino los campos del calendario por separado, y la anchura de su campo de año es la suya propia, de modo que en las placas viejas la conversación sobre 2038 empieza por la pregunta de hasta qué año cuenta el chip mismo.
El protocolo NTP lleva el reloj de una máquina al tiempo común con precisión de unos pocos milisegundos, y él mismo avisa de una inserción con un indicador propio un día antes. Frontera propia tiene también, y llega antes: la cuenta corre desde 1900 en treinta y dos bits sin signo y se desbordará en febrero de 2036.
En un registro la marca se escribe o bien como número, o bien como cadena según la norma, y lo segundo es preferible por una sola razón: en cadenas de igual longitud el orden alfabético coincide con el cronológico, de modo que las entradas se ordenan sin analizar la fecha. Precisamente por eso el formato se ha extendido mucho más allá de la informática.
La preparación de un aparato para el año 2038 solo puede comprobarse de un modo: adelantar en él el reloj más allá de la frontera fatídica y ver qué ocurre con los registros, los certificados y el cálculo de intervalos. Así se han hallado ya fallos en la facturación, en los sistemas de control de acceso y en los plazos de validez de las claves, donde una fecha futura se forma por suma y se desborda mucho antes que la propia frontera.
05 · Reglas de escritura
De lo grueso a lo fino, y siempre con el desfase
La norma exige orden decreciente de los campos, cuatro cifras del año, el guion como separador de fecha y la letra T delante de la hora; el desfase horario se indica o bien con la letra Z para el meridiano de origen, o bien como más-menos horas y minutos. La marca unix se escribe como número entero sin separación de miles, y el múltiplo debe precisarse siempre, ya que un factor de mil separa los segundos de los milisegundos y por el tamaño del número se confunden con facilidad.
La primera escritura se lee de distinto modo en distintos países y por eso resulta inadmisible en el intercambio de datos. La segunda omite tanto el separador como el desfase, de suerte que el instante queda indeterminado en un día a uno y otro lado. La tercera pierde los ceros iniciales, con lo que las cadenas dejan de ordenarse alfabéticamente — y es justamente por esa propiedad por lo que se aprecia el formato. La cuarta iguala la cuenta unix a la escala atómica, cuando entre ellas median veintisiete segundos de inserciones acumuladas.
06 · Unidades vecinas
Al lado están todas las cuentas armadas según el mismo principio, pero desde otro inicio: el tiempo NTP desde 1900, la fecha juliana desde el mediodía del año 4713 antes de nuestra era, la escala del sistema satelital desde enero de 1980. Se diferencian solo por la época y la unidad, y por eso se convierten restando una constante.
segundos con signo
su límite cae ya en 2036
segundos intercalares contados con honradez
De las fichas de Simetrium están al lado la fecha juliana, de donde se toma la constante de conversión, las escalas UTC, TAI y UT1, que explican los segundos intercalares desaparecidos, segundo como unidad de la cuenta, y el bit, cuya anchura es la que fija el límite.
07 · Sección histórica
Una época elegida por falta de bits
En el primer manual de Unix el tiempo se contaba en sesentavos de segundo desde el comienzo de 1971, y en treinta y dos bits tal cuenta contenía apenas unos dos años. Se agotaban tan de prisa que habría habido que desplazar la época en cada edición del sistema, y se renunció a las fracciones de segundo en favor de las enteras.
Al pasar a segundos enteros, los desarrolladores ganaron una reserva de ciento treinta y seis años y pudieron elegir el inicio por comodidad y no por necesidad. Se tomó el primero de enero de 1970 — la fecha redonda más próxima en el pasado, hasta la cual los registros de máquina de todos modos no llegaban — y desde entonces no se ha cambiado ni una sola vez, aunque el sistema se ha reescrito de raíz más de una vez.
La Organización Internacional de Normalización redujo a uno los formatos nacionales divergentes y puso en su base una regla sencilla: los campos van de lo grueso a lo fino, todos con ceros iniciales. El efecto lateral resultó más importante que el propósito — tales cadenas se ordenan como números, y el formato se extendió a nombres de archivo, registros y protocolos de intercambio.
Los sistemas de escritorio y de servidor pasaron a sesenta y cuatro bits hace mucho, y allí la frontera está empujada más allá de todo horizonte razonable. El peligro ha quedado en otra parte: en el firmware de instrumentos con veinte años de vida útil, en formatos de archivo donde el campo está declarado con cuatro bytes, y en cálculos de plazos futuros, que se desbordan ya hoy en cuanto se suman quince años a la fecha presente.
Una cuenta que, pese a su nombre, no cuenta segundos
La definición del tiempo Unix suena a cuenta de segundos, pero la exigencia de 86 400 segundos redondos al día la convierte en otra cosa: en una función lineal de la escritura UTC y no en una medida del tiempo transcurrido. Cada vez que el servicio de la rotación terrestre anuncia una inserción, la cuenta ha de repetir dos veces un solo y mismo valor o saltar atrás, y a la diferencia de dos marcas se le pierde justamente ese segundo. En medio siglo se han acumulado veintisiete pérdidas así, y por eso en las tareas que requieren una duración verdadera se toma la escala atómica y no esta.
La segunda peculiaridad no está en absoluto en la definición, sino en el modo de almacenamiento, y eso la convierte en el único límite de nuestro catálogo que no fija ni la naturaleza ni un convenio, sino la anchura de una palabra de máquina. La fecha juliana no termina nunca, porque es un número; el tiempo Unix termina el diecinueve de enero de 2038, porque es un campo de cuatro bytes. La diferencia entre una magnitud y su representación ocupa de ordinario poco a los metrólogos, y aquí es justamente ella la que lo decide todo.
Catálogo · unidades de medida
Una ficha para cada magnitud
Siete unidades básicas del SI, veintidós derivadas con nombre propio y magnitudes ajenas al sistema sin las cuales no funcionarían ni la técnica ni el calendario.