Χρόνος Unix και γραφή ISO 8601
Μονάδα εκτός SI · μέγεθος: μια χρονική στιγμή ως ακέραιος αριθμός δευτερολέπτων από το 1970
Στις δεκαεννέα Ιανουαρίου 2038, στις τρεις ώρες δεκατέσσερα λεπτά και επτά δευτερόλεπτα παγκόσμιου χρόνου, ένας μετρητής δευτερολέπτων πλάτους τριάντα δύο δυφίων θα φτάσει στο 2 147 483 647 — τον μεγαλύτερο αριθμό που είναι ικανός να χωρέσει. Ο επόμενος κτύπος θα σηκώσει το ανώτατο δυφίο, και η ίδια δυαδική λέξη θα διαβάζεται πλέον ως αρνητική: τα ρολόγια που κρατούν τον χρόνο ακριβώς με αυτή τη μέτρηση θα βρεθούν όχι στο 2038, αλλά στον Δεκέμβριο του 1901. Περιέργεια μακρινού μέλλοντος δεν είναι — ένας βιομηχανικός ελεγκτής ή ένας υδρομετρητής υπηρετεί περισσότερο από τα δώδεκα χρόνια που απομένουν.
Η μέτρηση είναι φτιαγμένη με τη μεγαλύτερη απλότητα: τα δευτερόλεπτα τρέχουν το ένα μετά το άλλο από τα μεσάνυχτα της πρώτης Ιανουαρίου 1970, και μια ημέρα περιέχει σε αυτήν πάντοτε ακριβώς 86 400 δευτερόλεπτα. Ακριβώς αυτή η απλότητα είναι η πηγή και των δύο ιδιαιτεροτήτων της. Από τη μια, από τον αριθμό προκύπτει στη στιγμή μια ημερομηνία του ημερολογίου και αντιστρόφως, ώστε κάθε ημερολόγιο συμβάντων, κάθε βάση δεδομένων και κάθε σύστημα αρχείων κρατούν τον χρόνο με αυτήν. Από την άλλη, ένα δίσεκτο δευτερόλεπτο σε τέτοια μέτρηση δεν εκφράζεται καθόλου, πράγμα που σημαίνει ότι, παρά το όνομά της, δεν αριθμεί δευτερόλεπτα αλλά ημέρες με τα κλάσματά τους, και είναι στην πραγματικότητα γραμμική συνάρτηση της γραφής UTC και όχι μετρητής του χρόνου που πέρασε.
01 · Ορισμός
Ο χρόνος Unix είναι το πλήθος των δευτερολέπτων που πέρασαν από τα μεσάνυχτα της πρώτης Ιανουαρίου 1970 συντονισμένου παγκόσμιου χρόνου, με την προϋπόθεση ότι κάθε ημέρα κρατά ακριβώς 86 400 δευτερόλεπτα. Η γραφή ISO 8601 δηλώνει το ίδιο αλλιώς: με ημερομηνία ημερολογίου, ώρα της ημέρας και ένδειξη της μετατόπισης από τον πρώτο μεσημβρινό, με τα πεδία να τρέχουν αυστηρά από το χοντρό στο λεπτό.
Η επιφύλαξη για τα 86 400 δευτερόλεπτα δεν είναι λεπτομέρεια, αλλά το ουσιωδέστερο στον ορισμό. Ένα δίσεκτο δευτερόλεπτο, που το ανακοινώνει η υπηρεσία περιστροφής της Γης, η μέτρηση δεν μπορεί να το δεχτεί, και γι' αυτό τη στιγμή της παρεμβολής το σύστημα είτε επαναλαμβάνει δύο φορές μία και την ίδια τιμή, είτε γυρίζει το ρολόι πίσω. Από αυτό προκύπτει κάτι σημαντικό: η διαφορά δύο αριθμών unix δεν είναι το πλήθος των δευτερολέπτων που πέρασαν πραγματικά ανάμεσα σε δύο συμβάντα αν ανάμεσά τους έπεσε παρεμβολή — η απόκλιση από την ατομική κλίμακα έχει ήδη φτάσει τα είκοσι επτά δευτερόλεπτα.
Το όριο όμως δεν εξαρτάται από τον ορισμό, αλλά από το πλάτος της αποθήκευσης. Τριάντα δύο δυφία με πρόσημο δίνουν μέγιστη τιμή 2 147 483 647, που πέφτει στις δεκαεννέα Ιανουαρίου 2038· η επόμενη αύξηση γυρίζει το ανώτατο δυφίο στη μονάδα και κάνει τον αριθμό αρνητικό, ρίχνοντας το ρολόι στις δεκατρείς Δεκεμβρίου 1901. Τα εξήντα τέσσερα δυφία σπρώχνουν το σύνορο διακόσια ενενήντα δύο δισεκατομμύρια χρόνια μπροστά, αλλά τα ακέραια δισεκατομμυριοστά στα ίδια εξήντα τέσσερα δυφία εξαντλούνται ήδη το 2262.
Η γραφή κατά το πρότυπο λύνει άλλο έργο — την ανταλλαγή και όχι την αποθήκευση — και γι' αυτό μετρούν σε αυτήν πράγματα που ο αριθμός δεν τα έχει καθόλου: η ωριαία μετατόπιση, το διαχωριστικό ανάμεσα σε ημερομηνία και ώρα, και ο κανόνας ότι σε ίσο μήκος συμβολοσειράς η αλφαβητική σειρά συμπίπτει με τη χρονολογική. Ακριβώς αυτή η τελευταία ιδιότητα έκανε τη μορφή θεμέλιο της ταξινόμησης σε ονόματα αρχείων και σε ημερολόγια.
Οδηγήστε τον χρόνο με τον ολισθητήρα και δείτε τον καταχωρητή να γεμίζει: τα δυφία ανάβουν από δεξιά προς τα αριστερά, και όσο το ανώτατο, εκείνο του προσήμου, μένει σκοτεινό, ο αριθμός είναι θετικός και η ημερομηνία μεγαλώνει. Μόλις ο μετρητής περάσει το 2 147 483 647, το ανώτατο δυφίο φλέγεται κόκκινο, ολόκληρος ο αριθμός γίνεται αρνητικός, και το ρολόι πηδά στο 1901.
Η πράσινη ευθεία είναι η ατομική κλίμακα, όπου κάθε δευτερόλεπτο είναι όντως δευτερόλεπτο. Η κόκκινη κλιμακωτή είναι ο χρόνος Unix, που σε κάθε παρεμβολή δίνει δύο φορές μία και την ίδια σήμανση, γι' αυτό η γραμμή στέκει επί τόπου. Η απόκλιση φτάνει ήδη τα είκοσι επτά δευτερόλεπτα και μεγαλώνει, και γι' αυτό η μέτρηση κάνει για ημερομηνία ημερολογίου, όχι όμως για μέτρηση διαρκειών στη φυσική.
02 · Μετατροπή
Εισαγάγετε χρονοσήμανση ή ημερομηνία
Ανάμεσα σε όλα τα πολλαπλάσια της μέτρησης — δευτερόλεπτα, χιλιοστά, εκατομμυριοστά και δισεκατομμυριοστά — οι μετατροπές είναι ακριβείς, αφού διαφέρουν μόνο κατά έναν συντελεστή. Προσεγγιστική είναι μία μόνο γραμμή: η μετατροπή στην ατομική κλίμακα απαιτεί να ξέρει κανείς πόσα δίσεκτα δευτερόλεπτα συσσωρεύτηκαν ως τη δεδομένη στιγμή.
Την ανάλυση μιας συμβολοσειράς κατά το πρότυπο το δελτίο την κάνει στην εκτεταμένη γραφή με το γράμμα Z· η βασική μορφή χωρίς διαχωριστικά έχει μεταφερθεί στις λεπτές ρυθμίσεις.
Το πρόβλημα του έτους 2038 δεν βρίσκεται στο πρότυπο, αλλά στο υλικό και στον παλιό κώδικα: σημάνσεις τριάντα δύο δυφίων κάθονται στο υλικολογισμικό των μετρητών, στους βιομηχανικούς ελεγκτές, στις μορφές των συστημάτων αρχείων και στις βάσεις δεδομένων όπου το πεδίο έχει ήδη δηλωθεί με τέσσερις οκτάδες. Να αλλάξει κανείς τον τύπο στον πηγαίο κώδικα είναι αρκετά εύκολο· να περάσει από εκατομμύρια εγκατεστημένες συσκευές μέσα στα δώδεκα χρόνια που απομένουν είναι έργο του ίδιου είδους με εκείνο που στεκόταν πριν από το έτος 2000.
| Τιμή | Σημείωση | ||
|---|---|---|---|
| {u} | {name} | {value} | {note} |
03 · Τάξεις μεγέθους
λογαριθμική κλίμακα: από το δευτερόλεπτο ως το όριο των εξήντα τεσσάρων δυφίων04 · Όργανα μέτρησης
Με τι σημαίνεται ένα συμβάν στον χρόνο
Ένα ξεχωριστό ολοκληρωμένο με μπαταρία, που κρατά τη μέτρηση όσο η συσκευή είναι σβηστή. Αποθηκεύει συνήθως όχι σήμανση unix, αλλά τα πεδία του ημερολογίου χωριστά, και το πλάτος του πεδίου του έτους είναι δικό του, ώστε στις παλιές πλακέτες η κουβέντα για το 2038 αρχίζει από το ερώτημα ως ποιο έτος μετρά το ίδιο το ολοκληρωμένο.
Το πρωτόκολλο NTP φέρνει το ρολόι μιας μηχανής στον κοινό χρόνο με ακρίβεια λίγων χιλιοστών του δευτερολέπτου, και το ίδιο προειδοποιεί για παρεμβολή με ξεχωριστή σημαία μία ημέρα νωρίτερα. Δικό του σύνορο έχει επίσης, και έρχεται νωρίτερα: η μέτρηση τρέχει από το 1900 σε τριάντα δύο δυφία χωρίς πρόσημο και θα υπερχειλίσει τον Φεβρουάριο του 2036.
Στο ημερολόγιο η σήμανση γράφεται είτε με αριθμό είτε με συμβολοσειρά κατά το πρότυπο, και το δεύτερο είναι προτιμότερο για έναν ακριβώς λόγο: σε συμβολοσειρές ίσου μήκους η αλφαβητική σειρά συμπίπτει με τη χρονολογική, ώστε οι εγγραφές ταξινομούνται χωρίς ανάλυση της ημερομηνίας. Ακριβώς γι' αυτό η μορφή απλώθηκε πολύ πέρα από την υπολογιστική τεχνική.
Η ετοιμότητα μιας συσκευής για το 2038 δοκιμάζεται με έναν μόνο τρόπο — να της γυρίσει κανείς το ρολόι πέρα από το μοιραίο σύνορο και να δει τι θα γίνει με τα ημερολόγια, με τα πιστοποιητικά και με τον υπολογισμό των διαστημάτων. Έτσι έχουν ήδη βρεθεί αστοχίες στη χρέωση, στα συστήματα ελέγχου πρόσβασης και στις διάρκειες ισχύος των κλειδιών, όπου μια ημερομηνία στο μέλλον φτιάχνεται με πρόσθεση και υπερχειλίζει πολύ πριν από το ίδιο το σύνορο.
05 · Κανόνες γραφής
Από το χοντρό στο λεπτό, και πάντοτε με τη μετατόπιση
Το πρότυπο απαιτεί φθίνουσα σειρά των πεδίων, τέσσερα ψηφία του έτους, το ενωτικό ως διαχωριστικό της ημερομηνίας και το γράμμα T πριν από την ώρα· η ωριαία μετατόπιση δηλώνεται είτε με το γράμμα Z για τον πρώτο μεσημβρινό, είτε ως συν-πλην ώρες και λεπτά. Η σήμανση unix γράφεται με ακέραιο αριθμό χωρίς χωρισμό των τάξεων, και το πολλαπλάσιο πρέπει πάντοτε να διευκρινίζεται, αφού ένας συντελεστής χιλίων χωρίζει τα δευτερόλεπτα από τα χιλιοστά, και από το μέγεθος του αριθμού συγχέονται εύκολα.
Η πρώτη γραφή διαβάζεται διαφορετικά σε διαφορετικές χώρες και γι' αυτό στην ανταλλαγή δεδομένων είναι απαράδεκτη. Η δεύτερη παραλείπει και το διαχωριστικό και τη μετατόπιση, ώστε η στιγμή μένει αόριστη κατά μία ημέρα προς κάθε πλευρά. Η τρίτη χάνει τα αρχικά μηδενικά, γι' αυτό οι συμβολοσειρές παύουν να ταξινομούνται αλφαβητικά — και ακριβώς γι' αυτή την ιδιότητα εκτιμάται η μορφή. Η τέταρτη εξισώνει τη μέτρηση unix με την ατομική κλίμακα, ενώ ανάμεσά τους κείτονται είκοσι επτά δευτερόλεπτα συσσωρευμένων παρεμβολών.
06 · Γειτονικές μονάδες
Δίπλα στέκονται όλες οι μετρήσεις που είναι φτιαγμένες κατά την ίδια αρχή, αλλά από άλλη αφετηρία: ο χρόνος NTP από το 1900, η ιουλιανή ημερομηνία από το μεσημέρι του έτους 4713 πριν από την εποχή μας, η κλίμακα του δορυφορικού συστήματος από τον Ιανουάριο του 1980. Διαφέρουν μόνο κατά την εποχή και τη μονάδα, και γι' αυτό μετατρέπονται με αφαίρεση μιας σταθεράς.
προσημασμένα δευτερόλεπτα
το όριό του πέφτει ήδη στο 2036
τα δίσεκτα μετρημένα τίμια
Από τα δελτία του Simetrium δίπλα στέκονται η ιουλιανή ημερομηνία, από όπου λαμβάνεται η σταθερά μετατροπής, οι κλίμακες UTC, TAI και UT1, που εξηγούν τα χαμένα δίσεκτα δευτερόλεπτα, δευτερόλεπτο ως μονάδα της μέτρησης, και το δυφίο, του οποίου το πλάτος ορίζει το όριο.
07 · Ιστορικό μέρος
Μια εποχή που επιλέχθηκε από έλλειψη δυφίων
Στο πρώτο εγχειρίδιο του Unix ο χρόνος μετριόταν σε εξηκοστά του δευτερολέπτου από την αρχή του 1971, και σε τριάντα δύο δυφία τέτοια μέτρηση χωρούσε μόλις δυο περίπου χρόνια. Εξαντλούνταν τόσο γρήγορα ώστε η εποχή θα έπρεπε να μετακινείται σε κάθε έκδοση του συστήματος, και τα κλάσματα του δευτερολέπτου εγκαταλείφθηκαν υπέρ των ακεραίων.
Περνώντας στα ακέραια δευτερόλεπτα, οι κατασκευαστές κέρδισαν απόθεμα εκατόν τριάντα έξι ετών και μπόρεσαν να διαλέξουν την αφετηρία από ευκολία και όχι από ανάγκη. Πήραν την πρώτη Ιανουαρίου 1970 — την πλησιέστερη στρογγυλή ημερομηνία στο παρελθόν, ως την οποία οι μηχανικές εγγραφές ούτως ή άλλως δεν έφταναν — και από τότε δεν την άλλαξαν ούτε μία φορά, μολονότι το σύστημα ξαναγράφτηκε από τα θεμέλια περισσότερες από μία φορές.
Ο Διεθνής Οργανισμός Τυποποίησης έφερε τις αποκλίνουσες εθνικές μορφές σε μία και έβαλε στη βάση της έναν απλό κανόνα: τα πεδία τρέχουν από το χοντρό στο λεπτό, όλα με αρχικά μηδενικά. Η παρενέργεια αποδείχθηκε σημαντικότερη από την πρόθεση — τέτοιες συμβολοσειρές ταξινομούνται σαν αριθμοί, και η μορφή απλώθηκε σε ονόματα αρχείων, ημερολόγια και πρωτόκολλα ανταλλαγής.
Τα επιτραπέζια και τα διακομιστικά συστήματα πέρασαν στα εξήντα τέσσερα δυφία εδώ και καιρό, και εκεί το σύνορο έχει σπρωχτεί πέρα από κάθε λογικό ορίζοντα. Ο κίνδυνος έμεινε αλλού: στο υλικολογισμικό οργάνων με εικοσαετή ζωή, σε μορφές αρχείων όπου το πεδίο δηλώνεται με τέσσερις οκτάδες, και σε υπολογισμούς μελλοντικών προθεσμιών, που υπερχειλίζουν ήδη σήμερα μόλις προστεθούν δεκαπέντε χρόνια στη σημερινή ημερομηνία.
Μια μέτρηση που, παρά το όνομά της, δεν μετρά δευτερόλεπτα
Ο ορισμός του χρόνου Unix ακούγεται σαν μέτρηση δευτερολέπτων, όμως η απαίτηση για στρογγυλά 86 400 δευτερόλεπτα την ημέρα τον κάνει κάτι άλλο: γραμμική συνάρτηση της γραφής UTC και όχι μέτρο του χρόνου που πέρασε. Κάθε φορά που η υπηρεσία περιστροφής της Γης ανακοινώνει παρεμβολή, η μέτρηση οφείλει να επαναλάβει δύο φορές μία και την ίδια τιμή ή να πηδήξει πίσω, και από τη διαφορά δύο σημάνσεων χάνεται ακριβώς εκείνο το δευτερόλεπτο. Σε μισό αιώνα τέτοιες απώλειες συσσωρεύτηκαν είκοσι επτά, και γι' αυτό σε έργα που ζητούν αληθινή διάρκεια παίρνουν την ατομική κλίμακα και όχι αυτήν.
Η δεύτερη ιδιαιτερότητα δεν βρίσκεται καθόλου στον ορισμό, αλλά στον τρόπο της αποθήκευσης, και αυτό την κάνει το μοναδικό όριο στον κατάλογό μας που δεν το έθεσε ούτε η φύση ούτε μια συμφωνία, αλλά το πλάτος μιας μηχανικής λέξης. Η ιουλιανή ημερομηνία δεν τελειώνει ποτέ, γιατί είναι αριθμός· ο χρόνος Unix τελειώνει στις δεκαεννέα Ιανουαρίου 2038, γιατί είναι πεδίο τεσσάρων οκτάδων. Η διαφορά ανάμεσα σε ένα μέγεθος και στην αναπαράστασή του απασχολεί συνήθως λίγο τους μετρολόγους, και εδώ ακριβώς αυτή τα κρίνει όλα.
Κατάλογος · μονάδες μέτρησης
Ένα δελτίο για κάθε μέγεθος
Επτά βασικές μονάδες SI, είκοσι δύο παράγωγες με δικό τους όνομα και μεγέθη εκτός συστήματος, χωρίς τα οποία δεν θα λειτουργούσε ούτε η τεχνική ούτε το ημερολόγιο.