Berkeley-Algorithmus
# Berkeley-Algorithmus

Der Berkeley-Algorithmus dient der Synchronisation von physikalischen Uhren in verteilten Systemen. Er erfordert eine zentrale Komponente, den sogenannten Zeitdaemon bzw. Zeitserver.

## Ablauf

Im Gegensatz zu anderen Algorithmen ist der Zeitserver bzw. Zeitdämon (dessen Zeit regelmäßig durch den Administrator eingestellt wird) im Berkeley-Algorithmus nicht passiv. Das bedeutet, dass sich der Zeitdämon und nicht der Client um die Verteilung der richtigen Systemzeit kümmert.

* Der Zeitserver fragt in regelmäßigen Abständen die lokale Zeit von allen teilnehmenden Clients ab.
* Die Zeit der abgefragten Maschinen wird dabei analog zum Algorithmus von Cristian berechnet.
* Anschließend errechnet der Zeitserver unter Ausschluss von starken Abweichern die interne Zeit des verteilten Systems als arithmetisches Mittel aller Zeitstempel. Die Uhrzeit des Zeitservers wird ebenfalls in die Berechnung mit einbezogen.
* Der Zeitserver teilt nun den Clients die jeweilige zeitliche Differenz mit, um welche die lokalen Uhrzeiten umgestellt werden müssen. Geht die Uhr des Clients vor (z. B. Clientzeit 1:20, Serverzeit 1:00), dann verlangsamt dieser seine Uhr so lange, bis Server- und Client-Zeit wieder übereinstimmen. Geht die Uhr des Clients nach (z. B. Clientzeit 1:00, Serverzeit 1:20), dann beschleunigt dieser seine Uhr entsprechend. Der Versand der Differenz erspart dabei die erneute Abschätzung der Laufzeiten auf den jeweiligen Clients.
