Unix Timekeeping

Diese WWW-Seiten über Zeit und Zeitzonen in Unix-Systemen sind aus einem Vortrag mit dem Titel "The time of Unix will not end before Jan 19 03:14:07 2038 UTC" beim monatlichen LUG-BS-Treffen, am 1999-06-17 entstanden. Die meisten Beschreibungen treffen allgemein auf Unix-Systeme zu. Manche Details, z.B. bei der Beschreibung der für PCs typischen Hardware-Uhren und den Routinen im kernel für die Software-Uhr sind aber Linux-spezifisch gehalten. Aber auch diese Linux-spezifischen Teile gelten meist ähnlich für andere Unices.

Nach einer Einführung in die Hintergründe und Entwicklung von Zeit und Zeitzonen wird das Timekeeping unter Unix beschrieben. Dabei sind drei Komponenten zu unterscheiden:

  1. Die Hardware-Uhr, die nur beim Booten benutzt wird, um die Software auf den richtigen Anfangswert zu setzen.
  2. Die Software-Uhr, die im Unix kernel implementiert ist. Sie zählt einfach nur Sekunden und kennt keine Minuten, Stunden, Datum und Zeitzonen.
  3. Die Funktionen der C library, mit denen die Zeitangaben aus dem Unix kernel in Datum und Uhrzeit in beliebigen Zeitzonen umgerechnet werden kann.

Der letzte Abschnitt erläutert Mechanismen, zur Synchronisation der Systemzeit (die Software-Uhr des kernels) mit anderen Uhren, z.B. einem Funkuhrempfänger oder anderen Rechnern im Netz. Beispiele zur Verwendung der Funktionen der C library sind hier zu finden.

Für die ganz Eiligen, die keine Zeit haben, sich um die Zeit zu kümmern, gibt's hier eine Kurzanleitung.


Urs Thürmann, thuerman@ibr.cs.tu-bs.de