Warum beginnt die Unix-Zeit am 01.01.1970?


Antworten:


28

Ich hätte die Antwort nicht gewusst, wenn Google nicht für mich da gewesen wäre:

Ab hier (kostenloses Abonnement erforderlich):

Linux folgt der von Unix festgelegten Tradition, die Zeit in Sekunden seit seinem offiziellen "Geburtstag" zu zählen, der in Bezug auf die Datenverarbeitung als "Epoche" bezeichnet wird und am 1. Januar 1970 beginnt.

Eine ausführlichere Erklärung finden Sie in diesem Wired News-Artikel . Es erklärt, dass die frühen Unix-Ingenieure dieses Datum willkürlich auswählten, weil sie ein einheitliches Datum für den Beginn der Zeit festlegen mussten und der Neujahrstag 1970 am bequemsten erschien.


5

Unix ist nicht 1970 geboren.

Die Unix-Epoche beginnt am 1. Januar 1970 um Mitternacht. Es ist wichtig zu wissen, dass dies nicht der "Geburtstag" von Unix ist - grobe Versionen des Betriebssystems gab es in den 1960er Jahren. Stattdessen wurde das Datum irgendwann in den frühen 70er Jahren in das System programmiert, nur weil dies nach Ansicht von Dennis Ritchie, einem der Ingenieure, die zu Beginn bei Bell Labs an Unix gearbeitet hatten, zweckmäßig war.


Praktisch damals, seitdem unpraktisch für Entwickler auf der ganzen Welt.
Chris Halcrow

3
@ ChrisHalcrow: was hättest du als Zeit 0 gewählt, wenn du dmr wärst? Und wie ist die Auswahl für Entwickler unbequem? Die Unannehmlichkeit besteht darin, dass das Messen der Zeit in "menschlichen" Begriffen (Jahre, Monate, Tage, Stunden / Minuten / Sekunden, Zeitzonen, Sommerzeit) kompliziert ist, nicht weil ein (beliebiger) $ t = 0 $ Augenblick gewählt wurde.
NickD

@ NickD, gute Aufforderung zur Erklärung und guter Punkt! Ich würde jedoch 00:00:00 von CE 0 wählen, da ich zuversichtlich bin, dass dies die Berechnung ein wenig vereinfacht. Bitte erklären Sie, was ist "dmr"? Ironischerweise zeigt die Tatsache, dass für das OP eine Erklärung erforderlich ist, warum dieses Datum gewählt wurde, dass es für jemanden von Natur aus verwirrend ist, die Verwendung des 01.01.-70. Als Referenzdatum zu verstehen!
Chris Halcrow

2
@ ChrisHalcrow: dmr = Dennis Ritchie. Haben Sie die Anzahl der Sekunden von Ihrem gewählten Ursprung bis heute berechnet? Wie viele Bits benötigt es? Der PDP-11 hatte 16-Bit-Register und -Wörter, aber Sie konnten zwei Register und zwei Wörter zu 32-Bit-Registern und Doppelwörtern für einige Operationen zusammenfassen. Das gibt Ihnen +/- 68 Jahre von Ihrer 0-Zeit (oder +136 Jahre, wenn Ihre Zeit nicht signiert war - aber dmr hat signiert gewählt). Seine Wahl mag ein wenig rätselhaft sein, wenn man sie zum ersten Mal sieht, aber es ist eine ziemlich offensichtliche Entscheidung, wenn man die obigen
Punkte berücksichtigt

1
@ NickD - tolle Erklärung! Dies sollte Teil der akzeptierten Antwort sein - warum nicht Ihren Kommentar dorthin verschieben und wir können unseren hier löschen?
Chris Halcrow

1

Ich mag die Frage :-)

Lassen Sie mich versuchen, es zu beantworten (natürlich Quelle: Internet)

Die Unix-Zeit wird durch eine 32-Bit-Ganzzahl (eine Ganzzahl) dargestellt, die positiv oder negativ (vorzeichenbehaftet) sein kann. Unix wurde ursprünglich in den 60er und 70er Jahren entwickelt, daher wurde der "Start" der Unix-Zeit auf den 1. Januar 1970 um Mitternacht GMT (Greenwich Mean Time) festgelegt. Diesem Datum / dieser Zeit wurde der Unix-Zeitwert 0 zugewiesen. Dies ist bekannt als die Unix-Epoche.

Eine 32-Bit-Ganzzahl mit Vorzeichen kann ganze Zahlen zwischen -2147483648 und 2147483647 darstellen. Da die Unix-Zeit bei 0 beginnt, gehen negative Werte der Unix-Zeit in der Zeit von der Epoche zurück und positive Zahlen in der Zeit vorwärts. Dies bedeutet, dass sich die Unix-Zeit vom Unix-Zeitwert -2147483648 oder 20:45:52 GMT am 13. Dezember 1901 bis zum Unix-Zeitwert 2147483647 oder 3:14:07 GMT am 19. Januar 2038 erstreckt Vorgeschichte und das Ende der Unix-Zeit.

Das Ende der Unix-Zeit ist der 19. Januar 2038, 03:14:07 GMT. Am 19. Januar 2038, 03:14:08 GMT laufen alle Computer, die noch 32-Bit-Unix-Zeit verwenden, über. Dies ist als "Jahr-2038-Problem" bekannt. Einige glauben, dass dies ein größeres Problem sein wird als das "Jahr-2000-Problem". Die Lösung für das Problem mit dem Jahr 2038 besteht darin, die Unix-Zeit in einer 64-Bit-Ganzzahl zu speichern. Dies ist in den meisten 64-Bit-Betriebssystemen bereits im Gange, aber viele Systeme werden möglicherweise bis 2038 nicht aktualisiert.


5
Nur ein Absatz befasst sich tatsächlich mit der Frage und ist etwas ungenau (die Epoche war ursprünglich 1971; sie wurde später verschoben)
Michael Mrozek


1
Das ist richtig Michael. Aus Wikipedia: Die frühesten Versionen der Unix-Zeit hatten eine 32-Bit-Ganzzahl, die mit einer Rate von 60 Hz inkrementiert wurde, was der Rate des Systemtakts auf der Hardware der frühen Unix-Systeme entsprach. In einigen Software-Interfaces erscheint daher weiterhin der Wert 60 Hz. Die Epoche unterschied sich auch vom aktuellen Wert. Die erste Ausgabe des Unix-Programmierhandbuchs vom 3. November 1971 definiert die Unix-Zeit als "die Zeit seit dem 01.01.1971, gemessen in Sechzigstelsekunden".
Nikhil Mulley

@Nikhil Ich verstehe immer noch nicht warum 1970, nur weil Unix damals entwickelt wurde? Warum nicht 1960? oder anderer Monat anderer Tag?
Templer

@Nikhil oder ist das eigentlich egal? Nur der erste Monat des ersten Tages sieht besser aus und er wurde 1971 hergestellt, also würden 1970 auch besser aussehen?
Templer
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.