Usuario:Vmarcos1/Taller

De Wikipedia, la enciclopedia libre

El algoritmo de Berkeley se trata de un algoritmo de sincronización de relojes diseñado por Gusella y Zatti en 1989. Dicho algoritmo se creó para entornos en los cuales no se tienen receptores de tiempo UTC, de forma que, gracias a este algoritmo se pueden mantener los relojes del entorno sincronizados con la misma hora.

Introducción[editar]

Se trata de un algoritmo centralizado, en el que a diferencia de otros algoritmos como es el caso del algoritmo de Cristian, el servidor se va a elegir entre todos los equipos que se encuentran conectados en el entorno, cabe destacar que en ningún momento pasaremos un valor de tiempo debido al problema de sincronización entre mensajes y factores como el estado de la red los cuales suponen el problema de no poder estimar el tiempo necesario para mandar el mensaje con la hora, el algoritmo de Berkeley se limitará a estimar su tiempo a partir de todos los computadores conectados, estimará la deriva que tiene cada reloj y procederá al envío de la corrección necesaria en cada caso.

Funcionamiento del algoritmo[editar]

En el algoritmo de Berkeley, se procede a elegir un coordinador el cual tendrá el rol de maestro o lo que será lo mismo de servidor de tiempo. El coordinador en este algoritmo en diferencia con otros algoritmos de sincronización como es el caso del algoritmo de Cristian, no se mantendrá pasivo, se encargará de solicitar la hora del resto de equipos, los cuales tienen un rol de esclavos, dicha solicitud de hora se realizará de una forma periódica.

Una vez los esclavos hayan respondido con su hora local, el maestro realiza una estimación de los retardos de propagación de los mensajes con cada uno de los equipos esclavos, obteniendo así un tiempo medio que relaciona las horas recibidas durante la solicitud y la hora propia del maestro.

Realizada dicha estimación, el siguiente paso será actualizar los relojes de los equipos esclavos. Para ello, el maestro enviará a cada esclavo el desfase que tiene respecto a la hora promedio que se ha calculado. Se envía el desfase en lugar de enviar la hora coordinada puesto que se debe tener en cuenta el error que aparecería por el tiempo de transmisión. Finalmente, cada equipo se limitará a actualizar su reloj adelantándolo en caso de ir con retraso o ralentizándolo temporalmente en caso de ir adelantado hasta llegar aplicarse la deriva recibida.

Estudiando dicho algoritmo se puede pensar que no se tiene en cuenta el tiempo de propagación en la respuesta a la solicitud de la hora del esclavo a nuestro coordinador y por tanto, se recibe una hora con retraso. Se debe tener en cuenta que no es un escenario que se necesite tener en cuenta, puesto que la finalidad del algoritmo es la de calcular una hora promedio entre las que se reciben con el sondeo del maestro a todos sus esclavos. Además, en una red de área local entre los tiempos de propagación de mensajes entre maestro y los esclavos no existirá gran diferencia, de forma que la hora indicada por cada una de los esclavos será tomada por todos ellos en el mismo momento.

El algoritmo de Berkeley realiza un promedio tolerante a fallos usando de base los tiempos enviados por los esclavos, lo cual significa que únicamente se toman para calcular el promedio los tiempos enviados por aquellos relojes cuya diferencia no difiere entre sí entre unos umbrales estipulados, de forma que se entenderá que el resto de relojes no están funcionando correctamente.

En caso de fallo del maestro el proceso será el de elegir otro coordinador. Como fallo se entenderá que el maestro no realice las solicitudes de tiempo periódicas, no envíe a cada esclavo la deriva pertinente su reloj o simplemente que dote a los esclavos de un valor de deriva el cual no es muy lógico.

Inconvenientes[editar]

  • En caso de que el maestro falle, dejará de preguntar la hora y, en consecuencia, se perderá la sincronización y el sistema sucumbe.
  • El maestro tiene cierta tendencia a retrasar la sincronización lo cual supone que el sistema se sincronice en un tiempo erróneo y conllevará que el traspaso de mensajes no sea correcto.
  • Otro de los problemas de ser un algoritmo centralizado será el de tener que elegir un nuevo maestro debido a que se puedan producir constantes fallos en el tratamiento de los datos para llevar a acabo la sincronización, buscando un maestro que cometa menor cantidad de fallos y el sistema se mantenga en correcto funcionamiento.

Referencias[editar]

Bibliografía[editar]