Época Unix en la Estación Espacial Internacional

La Estación Espacial Internacional se encuentra en un campo gravitacional diferente al nuestro en la superficie de la Tierra. Casi todas las computadoras / protocolos dependen de que la época de Unix sea consistente en todas partes. La época de Unix es la misma para todas las computadoras en la superficie de la Tierra, ya que están en el mismo campo gravitatorio. ¿Es necesario corregir las computadoras en la ISS para la diferencia en el campo de gravitación y cambiar la época de la misma manera?

Aún más importante, ¿qué sucede cuando nos quedamos sin segundos en un número entero de 32 bits en 2038?
@geoffc, afortunadamente, las computadoras portátiles ISS son de 64 bits cnet.com/products/lenovo-thinkpad-t61p/specs
La hora CTIME/Unix Epoch está integrada en el sistema operativo. No es que el hardware no admita 64 bits, sino que el sistema operativo utiliza 64 o 32 bits. Active Directory usa FILETIME (entrada de 64 bits, contando intervalos de 100 nanosegundos desde el 1 de enero de 1601. Se agotó en el año 2510 más o menos). CTIME está firmado por lo que 2 mil millones de segundos desde el 1 de enero de 1970. Puede usarlo sin firmar, bueno hasta 2108 entonces. (Que es lo que es probable que todos hagamos en la mayoría de los sistemas operativos). Lo que no sé es qué usa VxWorks, o qué usa el lado ruso.
@geoffc En el lado positivo, me retiraré del desarrollo de software en 2038. En el lado distópico, probablemente dependeré de mucha tecnología médica que depende de sistemas integrados de 32 bits.
@RussellBorogove Cuando busqué las especificaciones de la computadora portátil ISS en mi antiguo manual de capacitación, decía que estaban basadas en Windows 98 Second Edition (esto es antes de que cambiaran a Unix).
Es interesante que para un objeto en órbita, la corrección GR (relatividad general) para la diferencia de potencial gravitacional y para moverse a alta velocidad se cancela parcialmente. Más aquí y aquí y especialmente aquí y aquí
Del tercer enlace: "Entonces, la doble diferencia entre el cambio de órbita y el cambio de superficie es:
Δ F o r b Δ F s tu r F F GRAMO METRO C 2 ( 1.5 h + R mi 1 R mi ) " .
Tenemos GRAMO METRO = 3.986E+14 m^3/s^2, C = 2,9979E+08 m/s, R mi = 6378137 metros, y h es la altitud sobre la Tierra, o aproximadamente 400.000 metros para la ISS. El F los valores son frecuencias de reloj.
Los efectos relativistas sobre el tiempo en la ISS son extremadamente pequeños, una deriva de unos 25 microsegundos por día, o alrededor de 0,3 partes por billón. La tasa de deriva del reloj en una computadora portátil típica es del orden de 10 a 20 partes por millón.
"Casi todas las computadoras / protocolos dependen de que la época de Unix sea consistente en todas partes". No, no lo hacen.
@geoffc Y2K38??
gramo no es constante en la superficie de la Tierra.
Tienes un pequeño problema de nomenclatura. La época de Unix es un punto fijo en el tiempo, 1/1/1970 00:00:00 UTC. Lo que probablemente quiere decir es "tiempo Unix", que es (aproximadamente) la cantidad de segundos desde la época. Sin embargo, el tiempo de Unix es una mala aproximación del tiempo real, ya que, por ejemplo, no tiene en cuenta los segundos intercalares: cada día se define con 86400 segundos, ni uno más ni uno menos, por lo que cuando ocurren segundos intercalares, el tiempo Unix debe ajustarse. respectivamente. Consulte la discusión en en.wikipedia.org/wiki/Unix_time y la comparación entre la hora Unix, UTC y TAI en varios casos.
¿Cómo ayudaría en algo el cambio de época?
@geoffc al menos Alpine Linux, con bibliotecas musl C, ya está usando time_t de 64 bits. Creo que es muy poco probable que haya unidades que todavía tengan time_t de 32 bits para 2038, o que alguien alguna vez use un entero de 32 bits sin signo para time_t. (Acabo de verificar y GNU libc también se puede construir con time_t de 64 bits, pero aún no sé qué tan extendido está el uso de eso).
Las computadoras portátiles ISS más recientes (~2014) son todas HP ZBook G2 y ejecutan Windows 10 en una rama de soporte a largo plazo y/o una de una variedad de cargas personalizadas basadas en Linux.

Respuestas (7)

El tiempo POSIX no incluye segundos bisiestos y no se implementa de la misma manera en todos los UNIX, por lo que habitualmente se vuelve inconsistente durante varios segundos cada dos años. No es una escala de tiempo de alta precisión, y no tiene mucho sentido corregirla por efectos relativistas que son más pequeños de lo que puede representar. El GPS tiene que ser corregido --- en particular, los relojes tienen que ir lentos en tierra, para que se aceleren a la velocidad correcta una vez en órbita --- pero los errores del reloj GPS se miden en nanosegundos, y los satélites GPS orbitan mucho más lejos que la ISS. Los protocolos de red basados ​​en el tiempo tienen que ser mucho más indulgentes con los errores, o su tasa de falsas alarmas será demasiado alta.

El tiempo POSIX podría no hacerlo, pero el tiempo Unix sí. Existe una diferencia entre el estándar POSIX y los posibles comportamientos reales de los sistemas Unix , que pueden incluir el tictac correcto de los segundos intercalares. Si desea argumentar que el tiempo de Unix es lo suficientemente descuidado como para que los efectos relativistas generales sean la menor de las preocupaciones, entonces el soporte de segundo intercalar es el gancho equivocado para colgarlo. Con mucho, los mejores argumentos son los de otras respuestas aquí, a saber, que los efectos netos son pequeños y que los hardware de PC no son tan precisos de todos modos. unix.stackexchange.com/a/294715/5132
"Los satélites GPS orbitan mucho más lejos que la ISS" no es realmente un argumento. Tenga en cuenta que los efectos relativistas son casi de la misma magnitud absoluta en ambas órbitas, ¡pero tienen signos opuestos!

No.

Los relojes de las computadoras son inexactos. Se basan en correcciones constantes para mantener la hora correcta. Dado que su imprecisión es mucho mayor que la diferencia de velocidad en el tiempo entre la Tierra y la ISS, realmente no importa.

Qué cierto: una vez tuve una tableta de gama baja cuya hora del reloj se desviaba varios segundos al día si no estaba conectada a Internet (para volver a sincronizar desde alguna fuente maestra de sincronización)
@CarlWitthoft ¿Sabes por qué los relojes de las computadoras y los teléfonos son tan malos? Como anécdota, parecen mucho peores que un reloj de pulsera de cuarzo típico.
@user2705196 los relojes telefónicos pueden obtener su hora de las estaciones base (que usan relojes atómicos, de ahí la ubicuidad del FE-5680A en excedente) o de Internet, por lo que no es necesario que tengan ningún tipo de estabilidad a largo plazo, y el el fabricante tomará cualquier ahorro que pueda obtener
@llama ¡Sí, definitivamente cierto! Mi pregunta fue más bien "Me sorprende que los fabricantes de computadoras/teléfonos puedan ahorrar dinero con un RTC peor". Ingenuamente asumí que los buenos son tan baratos y estandarizados que nadie está haciendo una versión más barata y más mala. ¡Pero claramente estoy equivocado!
@ user2705196 Sospecho que, dado que una computadora ejecuta principalmente todo en sus pulsos de reloj internos, la frecuencia exacta que origina esa onda cuadrada no es importante para el diseño, especialmente cuando esperan que una fuente externa actualice la hora del reloj.
@user2705196 Los relojes suelen tener un condensador de recorte y se mantienen a una temperatura bastante constante al estar cerca del cuerpo del usuario: ninguno de esos es cierto para las tabletas, etc. Es una historia larga y compleja para contar en otro lugar, pero mi padre construyó máquinas de cronometraje. para ellos, que incluía un mecanizado impresionante.
@CarlWitthoft Solo para asegurarse de que quede claro: el reloj de su CPU (el que controla cada tic y da la clasificación de Mhz) es completamente independiente del que da el tiempo.
Los hornos @ user2705196 generalmente usan la frecuencia de la red como fuente de tiempo, ya que son demasiado baratos para incluir un reloj de construcción específico ...
@Antzi: quisquilloso sin sentido/dato curioso: sí, Linux, por ejemplo, actualiza la hora actual del sistema en una interrupción del temporizador, pero para marcas de tiempo de alta precisión (como o), clock_gettimeen gettimeofdayx86 interpola una compensación a la que se usa rdtsccon un factor de escala (y código ) exportado por el kernel a procesos de espacio de usuario en las páginas de VDSO. La frecuencia de referencia constante de TSC está separada de la frecuencia del reloj central (lo que la hace útil para el tiempo de reloj de pared, incluso cuando la CPU está aumentando o disminuyendo), pero se deriva de la misma señal de reloj, por lo que en realidad entra en juego como un fuente de tiempo.
@Antzi, la frecuencia de la red tiene cierta deriva en períodos cortos de tiempo, pero en períodos más largos es más precisa que un oscilador de cristal. Se ajusta ocasionalmente para mantener el promedio justo en el objetivo.
@PeterCordes No puedo encontrar ninguna información sobre clock_gettimeel uso rdtscpara interpolar nada. En general, el "reloj de pared" en la placa base mantiene el tiempo relativamente bien durante meses, pero es inexacto para la sincronización de milisegundos, y el reloj de la CPU mantiene el tiempo en microsegundos, pero es inexacto durante horas o más. Si hiciera un reloj de pared que usara el reloj de la CPU, pronto tendría una gran desviación en comparación con el tiempo real, solo es bueno para intervalos muy pequeños.
@Quantic: ¿Ha realizado un solo paso en el asm para llamarlo? Tengo. Sí, es impreciso, es por eso que solo se usa para un desplazamiento con precisión de nanosegundos en relación con la marca de tiempo registrada por la última interrupción del temporizador, como dije. Esa marca de tiempo precisa se actualiza cada HZ, por ejemplo, 10 ms, en una interrupción del temporizador, por lo que sí, el TSC solo se usa para ese pequeño intervalo. Esta respuesta SO también menciona algunos de esos detalles y enlaces a la fuente.

Todavía no importa para la mayoría de los propósitos prácticos. La desaceleración de un movimiento más rápido y la aceleración de un campo gravitatorio más débil se cancelan en parte, y el efecto neto es que el tiempo en la ISS es solo 0.0000000014% más lento que el tiempo en la Tierra , por lo que en toda su historia de 22 años ha perdido alrededor de una centésima parte. de un segundo

Las computadoras en la ISS no dependen de la hora UNIX/POSIX, sino de la hora GPS.

El tiempo de transmisión es el tiempo de transmisión de las computadoras de la ISS que pretende ser indicativo de la hora actual.
El mensaje de tiempo de transmisión es con respecto a la escala de tiempo GPS, no la escala de tiempo Universal Coordinada (UTC).

El tiempo tiene una precisión de ±1 s:

Debido a varias razones, los relojes de la computadora C&C [comando y control] pueden desviarse con respecto al tiempo del GPS integrado/Sistema de navegación inercial (INS) (SIGI) de la nave espacial hasta ±1 segundo. Todas las demás computadoras de la ISS se sincronizan con la computadora de C&C.

...pero se puede corregir a ±55 ms:

La computadora GN&C [guía, navegación y control] calcula el error de tiempo de la computadora C&C en comparación con el tiempo SIGI GPS y proporciona ese error de tiempo en los datos de transmisión de datos auxiliares (BAD). La marca de tiempo de cada paquete de datos se puede ajustar agregando el error de tiempo para crear una marca de tiempo con una precisión de ±55 microsegundos.

Esto es de acuerdo con la Guía del Proponente de Cargas Útiles Externas para la Estación Espacial Internacional (SSP 51071) .

¿Esto se aplica a las computadoras portátiles Linux PCS y SSC? "Computadoras en la ISS" es una categoría bastante amplia.

La hora de Unix se basa (descuidadamente) en UTC, que a su vez se basa en TAI (hora atómica internacional). TAI es un tiempo de coordenadas , una implementación de TT (tiempo terrestre) definido para ser igual al tiempo SI apropiado de un reloj estacionario al nivel del mar en la Tierra, y extendido para ser sincrónico en todas partes en coordenadas centradas en la Tierra.

Incluso los relojes en la superficie de la Tierra deben corregirse para que la altitud coincida con TAI. Los relojes de los satélites GPS requieren una corrección mucho mayor. La hora del GPS se mantiene sincronizada con TAI con la mayor precisión posible.

Para un cronometraje preciso en la ISS, usamos la hora del GPS, por lo que los relojes precisos de la ISS no marcan exactamente un segundo por segundo SI adecuado. Por ejemplo, el instrumento NICER pulsar utiliza un reloj descuidado (100 ppm) en cada unidad de medida, pero calibra el reloj con el GPS una vez por segundo, logrando así una precisión de unos pocos nanosegundos en relación con TAI después del procesamiento.

¿Esto se aplica a las computadoras portátiles Linux PCS y SSC?
@OrganicMarble Sin algún tipo de sincronización de tiempo externa, los relojes de las PC y las computadoras portátiles se alejan rápidamente tanto de la hora correcta como del TAI. Hasta donde yo sé, la situación en la ISS es la misma que en cualquier oficina donde hay una combinación de computadoras configuradas en diferentes épocas para diferentes propósitos que ejecutan software diferente.

Solo para tener una idea del orden de magnitud:

"La dilatación del tiempo explica por qué dos relojes en funcionamiento informarán tiempos diferentes después de diferentes aceleraciones. Por ejemplo, el tiempo pasa más lento en la ISS, con un retraso de aproximadamente 0,01 segundos por cada 12 meses terrestres que pasan".

dice https://en.wikipedia.org/wiki/Time_dilation

De manera similar, entre la superficie de la Tierra (1 g) y la superficie de Marte (1/3 g), por lo que el tiempo pasa más rápido en Marte porque las cosas son más rápidas en Marte que en la Tierra en 555 segundos por cada 1e12 segundos en la Tierra (1e12 segundos en la Tierra es más de 31688 años terrestres!). Así que estarás celebrando el Año Nuevo en la Tierra un poco antes en la Tierra que en Marte, pero a los marcianos no les importará, ¡ellos celebrarán el Año Nuevo en Marte!

Dilatación del tiempo entre Marte y la Tierra debido a la diferente masa

El campo gravitatorio no importa a efectos prácticos: el rendimiento de las computadoras no se ve afectado de manera apreciable por la gravedad. Lo que podría ser medible es que la ISS está viajando más rápido (ciertamente en términos de velocidad terrestre) que las computadoras terrestres. Sin embargo, la Tierra no está estacionaria sino que está orbitando alrededor del sol, la galaxia, etc., por lo que (a) la diferencia puede ser muy pequeña y (b) si usa la ISS como marco de referencia, entonces está estacionaria y la Tierra se está moviendo. . De cualquier manera, tener un CD con unos segundos de deriva en cualquier dirección no suele ser un problema para las comunicaciones.