Πρόβλημα του έτους 2038

Από τη Βικιπαίδεια, την ελεύθερη εγκυκλοπαίδεια
Μετάβαση σε: πλοήγηση, αναζήτηση

Το πρόβλημα του έτους 2038 είναι ένα πρόβλημα παρόμοιο με το Πρόβλημα του έτους 2000. Το πρόβλημα υπάρχει στις περιπτώσεις στις οποίες για την χρονική σήμανση και τους υπολογισμούς ημερομηνιών χρησιμοποιείται η διαφορά σε δευτερόλεπτα από την 1η Ιανουαρίου 1970 και αυτή η διαφορά αποθηκεύεται σε προσημασμένους ακεραίους 32 μπιτ.[1]

Το πρόβλημα[Επεξεργασία | επεξεργασία κώδικα]

Η μεγαλύτερη ημερομηνία που μπορεί να παρουσιαστεί χρησιμοποιώντας 32 μπιτ προσημασμένους ακεραίους σε συστήματα Unix είναι η 19η Ιανουαρίου 2038, 03:14:07 (231-1 = 2.147.483.647 δευτερόλεπτα μετά την 1η Ιανουαρίου 1970).[2] Το πρόβλημα μπορεί να παρουσιαστεί σε ενσωματωμένα συστήματα που χρησιμοποιούν ημερομηνίες είτε για υπολογισμούς είτε για τη λειτουργία τους. Επίσης πολλές δομές δεδομένων στο υπάρχον λογισμικό ή σε υπάρχουσες βάσεις δεδομένων, χρησιμοποιούν προσημασμένους ακεραίους 32 μπιτ για ημερομηνίες.

Λύση[Επεξεργασία | επεξεργασία κώδικα]

Δεν υπάρχει γενική καθολική λύση για το πρόβλημα αυτό. Η μετατροπή των δομών ή των χρονικών σημάνσεων σε μη προσημασμένους ακεραίους θα επέκτεινε τη διάρκεια ζωής κατά 68 χρόνια στο μέλλον αλλά παράλληλα θα μείωνε τη χρηστικότητά του κατά 68 χρόνια στο παρελθόν καθιστώντας άχρηστες τις ημερομηνίες πριν την 1η Ιανουαρίου του 1970. Η απλή αντικατάσταση των ακεραίων 32 μπιτ με ακεραίους 64 μπιτ θα έχει επιπτώσεις σε συναρτήσεις που περιμένουν τη μορφή της ημερομηνίας σε προσημασμένο 32 μπιτ ακέραιο.

Δεν υπάρχει καθολικά αποδεκτή λύση ούτε για τα συστήματα Digital Video Broadcasting και Advanced Television Systems Committee λόγω του λογισμικού που χρησιμοποιείται στους ήδη εγκατεστημένους δέκτες.

Τα περισσότερα λειτουργικά συστήματα που είναι σχεδιασμένα για χρήση σε υλικό το οποίο χρησιμοποιεί 64 bit, χρησιμοποιούν ήδη χρονοσήμανση 64 bit. Η χρονοσήμανση αυτή έχει μετακινήσει την εμφάνιση του αντίστοιχου προβλήματος κατά περίπου 292 δισεκατομμύρια έτη (στην 4η Δεκεμβρίου του έτους 292.277.026.596), χρόνος που είναι μεγαλύτερος από την εκτιμούμενη ηλικία του σύμπαντος.

Πολλά από αυτά τα λειτουργικά συστήματα χρησιμοποιούν κάποιο μηχανισμό εκτέλεσης προγραμμάτων τα οποία είναι σχεδιασμένα για αρχιτεκτονική 32 μπιτ. Σε αυτά τα προγράμματα το πρόβλημα του 2038 θα συνεχίσει να υπάρχει.

Παραπομπές[Επεξεργασία | επεξεργασία κώδικα]

  1. «The End of Time». 17 April 2010. http://stablecross.com/files/End_Of_Time.html. Ανακτήθηκε στις 19 March 2012. 
  2. Diomidis Spinellis (2006). Code quality: the open source perspective.. Effective software development series in Safari Books Online (illustrated έκδοση). Adobe Press, σελ. 49. ISBN 0-321-16607-8. https://books.google.com/books?id=vEN-ckcdtCwC&pg=PA49&dq=292,277,026,596&cd=1#v=onepage&q=292%2C277%2C026%2C596&f=false.