Perché l'ora di Unix inizia al 1970-01-01?


Risposte:


28

Non avrei saputo la risposta se non fosse stato lì per me Google:

Da qui (necessita di abbonamento gratuito):

Linux segue la tradizione stabilita da Unix di contare il tempo in secondi dal suo "compleanno" ufficiale - chiamato "epoca" in termini di elaborazione - che è il 1 gennaio 1970.

Una spiegazione più completa è disponibile in questo articolo di Wired News . Spiega che i primi ingegneri di Unix hanno scelto quella data arbitrariamente, perché avevano bisogno di fissare una data uniforme per l'inizio del tempo, e il Capodanno, 1970, sembrava il più conveniente.


5

Unix non è nato nel 1970.

L'epoca di Unix è mezzanotte del 1 ° gennaio 1970. È importante ricordare che questo non è il "compleanno" di Unix - le versioni approssimative del sistema operativo erano in circolazione negli anni '60. Invece, la data è stata programmata nel sistema un po 'all'inizio degli anni '70 solo perché era conveniente farlo, secondo Dennis Ritchie, uno degli ingegneri che ha lavorato su Unix ai Bell Labs all'inizio.


Comodo allora, scomodo per gli sviluppatori di tutto il mondo da allora.
Chris Halcrow,

3
@ChrisHalcrow: cosa avresti scelto come tempo 0 se fossi stato dmr? E in che modo la scelta è scomoda per gli sviluppatori? L'inconveniente è perché misurare il tempo in termini "umani" (anni, mesi, giorni, ore / minuti / secondi, fusi orari, ora legale) è complicato, non perché è stato scelto un istante (arbitrario) $ t = 0 $.
NickD

@NickD, buon suggerimento per una spiegazione e buon punto! Sceglierei 00:00:00 di CE 0, poiché sono sicuro che renderebbe le cose un po 'più facili da calcolare. Per favore, spiega cos'è "dmr"? Inoltre, ironicamente, il fatto che il PO richieda una spiegazione del perché sia ​​stata scelta questa data dimostra che è intrinsecamente confuso per qualcuno comprendere l'uso dell'01 / 01/70 come data di riferimento!
Chris Halcrow,

2
@ChrisHalcrow: dmr = Dennis Ritchie. Hai calcolato il numero di secondi dall'origine prescelta a oggi? Quanti bit richiede? Il PDP-11 aveva registri e parole a 16 bit, ma permetteva di raggruppare due registri e due parole per creare registri a 32 bit e parole doppie per alcune operazioni. Questo ti dà +/- 68 anni dalla tua 0 volta (o +136 anni se il tuo tempo non era firmato - ma dmr ha scelto firmato). La sua scelta potrebbe essere un po 'sconcertante la prima volta che la vedi, ma è una decisione abbastanza ovvia dato quanto sopra ...
NickD

1
@NickD - ottima spiegazione! Questo dovrebbe essere parte della risposta accettata - perché non spostare il tuo commento lì, e possiamo cancellare il nostro da qui?
Chris Halcrow, il

1

Mi piace la domanda :-)

Vorrei provare a rispondere (fonte ofcourse: internet)

Unix Time è rappresentato da un numero intero a 32 bit (un numero intero) che può essere positivo o negativo (con segno). Unix è stato originariamente sviluppato negli anni '60 e '70, quindi "l'inizio" di Unix Time era fissato al 1 ° gennaio 1970 a mezzanotte GMT (Greenwich Mean Time) - a questa data / ora è stato assegnato il valore Unix Time di 0. Questo è ciò che si sa come l'epoca Unix.

Un numero intero con segno a 32 bit può rappresentare numeri interi compresi tra -2147483648 e 2147483647. Poiché Unix Time inizia da 0, i valori negativi di Unix Time tornano indietro nel tempo dall'Epoca e i numeri positivi vanno avanti nel tempo. Ciò significa che Unix Time si estende dal valore Unix Time di -2147483648 o 20:45:52 GMT del 13 dicembre 1901 al valore Unix Time di 2147483647 o 3:14:07 GMT il 19 gennaio 2038. Queste date rappresentano l'inizio, il preistoria e fine di Unix Time.

La fine di Unix Time avrà luogo il 19 gennaio 2038 alle 03:14:07 GMT. Il 19 gennaio 2038 03:14:08 GMT tutti i computer che usano ancora Unix Time a 32 bit verranno traboccati. Questo è noto come "problema dell'anno 2038". Alcuni credono che questo sarà un problema più significativo del "problema dell'anno 2000". La correzione per il problema dell'anno 2038 è l'archiviazione di Unix Time in un numero intero a 64 bit. Questo è già in atto nella maggior parte dei sistemi operativi a 64 bit, ma molti sistemi potrebbero non essere aggiornati entro il 2038.


5
Solo un paragrafo di questo in realtà affronta la questione, ed è in qualche modo inaccurato (l'epoca era originariamente nel 1971; fu spostata in seguito)
Michael Mrozek


1
Quello è giusto Michael. Da Wikipedia: Le prime versioni del tempo Unix avevano un numero intero a 32 bit che aumentava a una frequenza di 60 Hz, che era la frequenza del clock di sistema sull'hardware dei primi sistemi Unix. Di conseguenza, il valore 60 Hz appare ancora in alcune interfacce software. Anche l'epoca differiva dal valore corrente. La prima edizione del Manuale del programmatore Unix del 3 novembre 1971 definisce il tempo Unix come "il tempo dalle 00:00:00, 1 gennaio 1971, misurato in sessanta secondi di secondo".
Nikhil Mulley,

@Nikhil Ancora non capisco perché il 1970, solo perché Unix è stato sviluppato quella volta? Perché non il 1960? o mese diverso giorno diverso?
Templare il

@Nikhil o non importa davvero? Solo il primo mese il primo giorno ha un aspetto migliore ed è stato realizzato nel 1971, quindi anche il 1970 avrebbe un aspetto migliore?
Templare il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.