3 SINCRONIZACION
3.1 HARDWARE
SINCRONIZACION DE RELOJES
La sincronización es más compleja en los sistemas distribuidos que en los centralizados, puesto que los primeros deben utilizar algoritmos distribuidos. Por lo general, no es posible (o recomendable) reunir toda la información relativa al sistema en un lugar y después dejar que cierto proceso la examine y tome una decisión, como se hace en el caso centralizado. En general, los algoritmos distribuidos tienen las siguientes propiedades:
Los primeros tres puntos indican que es inaceptable reunir toda la información en un lugar para su procesamiento. Por ejemplo, para llevar a cabo la asignación de recursos (asignar los dispositivos de EIS en una forma libre de bloqueos), por lo general no es aceptable enviar todas las solicitudes a un administrador de procesos, el cual examina a todos y otorga o niega las solicitudes con base en la información de sus tablas. En un sistema de gran tamaño, tal solución pone en predicamentos a dicho proceso.
Además, el hecho de que sólo exista un punto de fallo como éste hace que el sistema no sea confiable. Lo ideal es que un sistema distribuido debería ser más confiable que las máquinas individuales. Si alguna de ellas falla, el resto puede continuar su funcionamiento. Lo último que quisiéramos es una situación donde una máquina falle (por ejemplo, el asignador de recursos) y con ello detenga a un gran número de máquinas diversas. Para lograr la sincronización sin centralización necesitamos algo distinto al caso de los sistemas operativos tradicionales.
El último punto de la lista también es crucial. En un sistema centralizado el tiempo no tiene ambigüedades. Cuando un proceso desea conocer la hora, llama al sistema y el núcleo se la dice. Si el proceso A pide la hora y un poco después, el proceso B también la pide, el valor obtenido por B es mayor o igual que el valor obtenido por A. Ciertamente, no debe ser menor. En un sistema distribuido, no es trivial poner de acuerdo a todas las máquinas en la hora.
Por ejemplo,
pensemos por un momento las implicaciones de la carencia de un tiempo global en
el programa make de UNIX. En UNIX, los programas de
gran tamaño se dividen por lo general en varios archivos fuentes, de modo que
un cambio al archivo fuente sólo necesite una nueva compilación de un archivo y
no de todos. Si un programa consta de 100 archivos y no hay que volverlo a
compilar por la modificación de un archivo, la velocidad de trabajo de los
programadores aumenta en gran medida.
La forma de funcionamiento de make es muy sencilla. Cuando el programador termina de modificar todos los archivos fuentes, inicia make, el cual examina las horas en que todos los archivos fuentes y objetos fueron modificados por última vez. Si el archivo fuente input.c tiene la hora 2 151 y el correspondiente archivo objeto input.o tiene la hora 2 150, make sabe que input.c tiene modificaciones desde la creación de input.o, por lo que entonces hay que volver a compilar ínput.c. Por otro lado, si output.c tiene la hora 2 144 y output.o tiene la hora 2 145, entonces no es necesario volver a compilar. Así, make revisa todos los archivos fuentes para determinar aquellos que deban volverse a compilar y llama al compilador para que realice esta tarea.
Imaginemos ahora lo que podría ocurrir en un sistema distribuido donde no existe un acuerdo global en el tiempo. Supongamos que output.o tiene de nuevo la hora 2144 y que poco después se modifica output.c, pero se le asigna la hora 2143 debido a que el reloj de esta máquina es un poco lento, como se muestra en la siguiente figura Make no llamará al compilador. El programa en binario ejecutable resultante contendrá una mezcla de archivos objetos de las fuentes anteriores y nuevas. Tal vez no funcione y el programador se vuelva loco intentando descubrir la parte incorrecta del código.

Cuando cada maquina tiene su propio reloj, podría asignarse un tiempo anterior a un evento ocurrido después de otro.
Puesto que el tiempo es fundamental para la forma de pensar de la gente y el efecto de carecer de sincronización en los relojes puede ser muy drástico, ¿Es posible sincronizar todos los relojes en un sistema distribuido?.
Relojes
físicos
En ciertos sistemas (por ejemplo, los sistemas de tiempo real), es importante la hora real del reloj. Para estos sistemas se necesitan relojes físicos externos. Por razones de eficiencia y redundancia, por lo general son recomendables varios relojes físicos, lo cual implica dos problemas: (1) ¿Cómo los sincronizamos con los relojes del mundo real? y (2) ¿Cómo sincronizamos los relojes entre sí?
Antes de responder estas preguntas, vamos a detenernos un poco para ver la forma en que se mide en realidad el tiempo. No es tan sencillo como uno podría pensar, en particular CUANDO se requiere alta precisión. Desde la invención de los relojes mecánicos en el siglo XVII, el tiempo se ha medido de manera astronómica. Cada día, el sol parece levantarse en el horizonte del este, sube hasta una altura máxima en el cielo y desciende en el oeste. El evento en que el sol alcanza su punto aparentemente más alto en el cielo se llama tránsito del sol. Este evento ocurre aproximadamente a las doce del día de cada día. El intervalo entre dos tránsitos consecutivos del sol se llama el día solar. Puesto que existen 24 horas en un día, cada una de las cuales contiene 3 600 segundos, el segundo solar se define exactamente como 1/86 400 de un día solar.
En la década de 1940, se estableció que el período de rotación de la tierra no es constante. La tierra está disminuyendo su velocidad, debido a la fricción tidal y el arrastre atmosférico. Con base en estudios de los patrones de crecimiento del coral antiguo, los geólogos piensan ahora que hace 300 millones de años existían cerca de 400 días al año. La duración del año, es decir, el tiempo que tarda la tierra en dar una vuelta alrededor del sol, no ha cambiado; sólo ocurre que los días se hacen más largos. Además de esta tendencia a largo plazo, también ocurren pequeñas variaciones a corto plazo en la duración del día, lo cual probablemente se deba a una turbulencia originada en el centro de acero fundido de la Tierra.
Estas revelaciones han llevado a los astrónomos a calcular la longitud del día mediante la medición de un gran número de días y tomar su promedio antes de dividir entre 86400. La cantidad resultante se llama el segundo solar promedio.
Con la invención del reloj atómico en 1948, fue posible medir el tiempo de manera mucho más exacta y en forma independiente de todo el ir y venir de la Tierra, al contar las transiciones del átomo de cesio 133. Los físicos retomaron de los astrónomos la tarea de medir el tiempo y definieron el segundo como el tiempo que tarda el átomo de cesio 133 en hacer exactamente 9192631770 transiciones. La elección de 9192631770 fue hecha para que el segundo atómico fuera igual al segundo solar promedio en el año de su introducción. Actualmente, cerca de 50 laboratorios en el mundo tienen relojes de cesio 133. En forma periódica, cada laboratorio le indica a la oficina internacional de la hora en París (BIH) el número de marcas de su reloj. La oficina hace un promedio de estos números para producir el tiempo atómico internacional, que se abrevia TAI Así, TAI es el promedio de las marcas de los relojes de cesio 133 a partir de la medianoche del primero de enero de 1958 (principio del tiempo), dividido entre 9192631770.
Aunque TAI es muy estable y disponible para todos los que quieran comprarse un reloj de cesio, existe un serio problema con él; 86400 segundos TAI son ahora cerca de 3 milisegundos menos que un día solar medio (puesto que este día solar promedio es cada vez más grande). El uso de TAI para el registro del tiempo significaría que, con el paso de los años, el mediodía sería cada vez más temprano, hasta llegar al momento en que el mediodía ocurriría en la mañana. Las personas notarían esto y podrían estar en el mismo tipo de situación ocurrida en 1582, cuando el Papa Gregorio XIII decretó que se deberían omitir del calendario diez días. Este suceso provocó revueltas en las calles, puesto que los terratenientes demandaron una renta de todo un mes y los banqueros un interés de todo el mes, mientras que los patrones se rehusaron a pagar a los trabajadores por los diez días que no trabajaron, por mencionar unos cuantos de los conflictos. Los países protestantes, por cuestiones de principio, rechazaron todo lo que tenía que ver con los decretos papales y no aceptaron el calendario Gregoriano durante 170 años.
La BIH resolvió el problema mediante la introducción de segundos de salto, siempre que la discrepancia entre TAI y el tiempo solar creciera hasta 800 milisegundos. Esta corrección da lugar a un sistema de tiempo basado en los segundos constantes TAI, pero que permanece en fase con el movimiento aparente del Sol. Se le llama tiempo coordenado universal, UTC. UTC es la base de todo el sistema de mantenimiento moderno de la hora. En lo esencial, ha remplazado al estándar anterior, el tiempo del meridiano de Greenwich, que es un tiempo astronómico.
La mayoría de las compañías que proporcionan la luz eléctrica basan sus relojes de 60Hz o 50Hz en el UTC, por lo que cuando BIH anuncia un segundo de salto, las compañías elevan su frecuencia a 61Hz o 51Hz durante 60 o 50 segundos, para que avancen todos sus relojes del área de distribución. Puesto que un segundo es un intervalo notable para una computadora, un sistema operativo que necesite mantener un tiempo exacto durante un periodo de algunos años debe tener un software especial para registrar los segundos de salto conforme sean anunciados (a menos que utilicen la línea de corriente eléctrica para medir su tiempo, lo cual es demasiado burdo). El número total de segundos de salto introducidos en UTC hasta ahora es cercano a 30.
Para proporcionar UTC a las personas que necesitan un tiempo preciso, el Instituto Nacional del Tiempo Estándar (NIST) opera una estación de radio de onda corta con las siglas WWV desde Fort Collins, Colorado. WWV transmite un pulso corto al inicio de cada segundo UTC. La precisión del propio WWV es de cerca de ±1 milisegundo, pero debido a la fluctuación atmosférica aleatoria que puede afectar la longitud de la trayectoria de la señal, en la práctica la precisión no es mejor que ±10 milisegundos. En Inglaterra, laestación MSF que opera desde Rugby, condado de Warwick, proporciona un servicio similar, al igual que otras estaciones en varios países.
Varios satélites terrestres también ofrecen un servicio UTC. El Satélite de Ambiente Operacional Geoestacionario (GEOS) puede proporcionar UTC con una precisión de hasta 0.5 milisegundos y algunos otros satélites lo hacen incluso mejor.
El uso del radio de onda corta o los servicios de satélite requiere de un conocimiento preciso de la posición relativa del emisor y el receptor, para compensar el retraso de la propagación de la señal. Se dispone en forma comercial de radioreceptores de WWV, GEOS y las otras fuentes UTC. El costo varía desde unos cuantos cientos de dólares hasta decenas de cientos de dólares cada uno, donde se paga más por las mejores fuentes. UTC también se puede obtener de manera más barata, pero menos exacta, por vía telefónica, desde NIST en Fort Collins, pero aquí también hay que hacer una corrección por la ruta de la señal y la velocidad del módem. Esta corrección introduce por lo general cierta imprecisión, lo que dificulta la obtención del tiempo con una precisión extremadamente alta.