O Linux segue a tradição estabelecida pelo Unix de contar o tempo em segundos desde seu "aniversário" oficial - chamado de "época" em termos de computação - em 1º de janeiro de 1970.
Uma explicação mais completa pode ser encontrada neste artigo da Wired News .
Explica que os primeiros engenheiros do Unix escolheram essa data arbitrariamente, porque precisavam definir uma data uniforme para o início dos tempos, e o Dia de Ano Novo de 1970 parecia mais conveniente.
A época do Unix é meia-noite de 1º de janeiro de 1970. É importante lembrar que este não é o "aniversário" do Unix - versões aproximadas do sistema operacional existiam nos anos 60. Em vez disso, a data foi programada no sistema em algum momento no início dos anos 70 apenas porque era conveniente fazê-lo, de acordo com Dennis Ritchie, um dos engenheiros que trabalhavam no Unix no Bell Labs desde o início.
Conveniente na época, inconveniente para desenvolvedores em todo o mundo desde então.
Chris Halcrow
3
@ ChrisHalcrow: o que você escolheria como tempo 0 se fosse dmr? E como a escolha é inconveniente para os desenvolvedores? O inconveniente é que a medição do tempo em termos "humanos" (anos, meses, dias, horas / minutos / segundos, fusos horários, horário de verão) é complicada, não porque algum instantâneo (arbitrário) $ t = 0 $ foi escolhido.
NickD 6/09
@ NickD, boa dica para uma explicação e um bom argumento! Eu escolheria 00:00:00 de CE 0, pois tenho certeza de que tornaria as coisas um pouco mais fáceis de calcular. Por favor, explique o que é 'dmr'? Ironicamente, o fato de o OP exigir uma explicação do motivo da escolha dessa data mostra que é inerentemente confuso para alguém entender o uso de 01/01/70 como uma data de referência!
Chris Halcrow
2
@ChrisHalcrow: dmr = Dennis Ritchie. Você calculou o número de segundos da sua origem escolhida até hoje? Quantos bits são necessários? O PDP-11 tinha registros e palavras de 16 bits, mas permitiu agrupar dois registros e duas palavras para criar registros de 32 bits e palavras duplas para algumas operações. Isso dá a você +/- 68 anos a partir do seu tempo 0 (ou +136 anos se o seu tempo não tiver sido assinado - mas o dmr escolheu assinar). Sua escolha pode ser um pouco intrigante na primeira vez que você a vê, mas é uma decisão bastante óbvia, considerando o exposto acima ...
NickD 10/09
11
@ NickD - ótima explicação! Isso deve fazer parte da resposta aceita - por que não mover seu comentário para lá e podemos excluir o nosso daqui?
Chris Halcrow 10/09
1
Eu gosto da pergunta :-)
Deixe-me tentar responder (fonte do curso: internet)
O tempo Unix é representado por um número inteiro de 32 bits (um número inteiro) que pode ser positivo ou negativo (assinado). O Unix foi desenvolvido originalmente nas décadas de 60 e 70, de modo que o "início" do Horário do Unix foi definido para 1º de janeiro de 1970 à meia-noite GMT (horário de Greenwich) - nesta data / hora foi atribuído o valor de Tempo Unix igual a 0. É isso que se sabe como a época do Unix.
A 32 bit signed integer can represent whole numbers between -2147483648 and 2147483647. Since Unix Time starts at 0, negative Unix Time values go back in time from the Epoch and positive numbers go forward in time. This means that Unix Time spans from Unix Time value of -2147483648 or 20:45:52 GMT on December 13th 1901 to Unix Time value of 2147483647 or 3:14:07 GMT on January 19 in 2038. These dates represent the beginning, the pre-history and the end of Unix Time.
O final do horário Unix ocorrerá em 19 de janeiro de 2038 03:14:07 GMT. Em 19 de janeiro de 2038 03:14:08 GMT, todos os computadores que ainda usam o Unix Time de 32 bits serão excedidos. Isso é conhecido como "problema do ano 2038". Alguns acreditam que este será um problema mais significativo que o "problema do ano 2000". A correção para o problema do ano 2038 é armazenar o tempo do Unix em um número inteiro de 64 bits. Isso já está em andamento na maioria dos sistemas operacionais de 64 bits, mas muitos sistemas podem não ser atualizados até 2038.
Isso mesmo Michael. Da Wikipedia: As versões mais antigas do horário do Unix tinham um número inteiro de 32 bits incrementando a uma taxa de 60 Hz, que era a taxa do relógio do sistema no hardware dos primeiros sistemas Unix. O valor 60 Hz ainda aparece em algumas interfaces de software como resultado. A época também diferia do valor atual. A primeira edição do Unix Programmer's Manual, datada de 3 de novembro de 1971, define o horário do Unix como "o horário desde 00:00:00 de 1º de janeiro de 1971, medido em sexagésimos de segundo".
Nikhil Mulley
@ Nikhil Ainda não entendi o porquê de 1970, apenas porque o Unix foi desenvolvido nessa época? Por que não 1960? ou mês diferente dia diferente?
Templar
@ Nikhil ou isso realmente não importa? Apenas o primeiro mês, o primeiro dia parece melhor e foi feito em 1971, para que 1970 também ficasse melhor?
Respostas:
Eu não saberia a resposta, exceto que o google estava lá para mim:
A partir daqui (precisa de assinatura gratuita):
fonte
O Unix não nasceu em 1970.
fonte
Eu gosto da pergunta :-)
Deixe-me tentar responder (fonte do curso: internet)
O tempo Unix é representado por um número inteiro de 32 bits (um número inteiro) que pode ser positivo ou negativo (assinado). O Unix foi desenvolvido originalmente nas décadas de 60 e 70, de modo que o "início" do Horário do Unix foi definido para 1º de janeiro de 1970 à meia-noite GMT (horário de Greenwich) - nesta data / hora foi atribuído o valor de Tempo Unix igual a 0. É isso que se sabe como a época do Unix.
A 32 bit signed integer can represent whole numbers between -2147483648 and 2147483647. Since Unix Time starts at 0, negative Unix Time values go back in time from the Epoch and positive numbers go forward in time. This means that Unix Time spans from Unix Time value of -2147483648 or 20:45:52 GMT on December 13th 1901 to Unix Time value of 2147483647 or 3:14:07 GMT on January 19 in 2038. These dates represent the beginning, the pre-history and the end of Unix Time.
O final do horário Unix ocorrerá em 19 de janeiro de 2038 03:14:07 GMT. Em 19 de janeiro de 2038 03:14:08 GMT, todos os computadores que ainda usam o Unix Time de 32 bits serão excedidos. Isso é conhecido como "problema do ano 2038". Alguns acreditam que este será um problema mais significativo que o "problema do ano 2000". A correção para o problema do ano 2038 é armazenar o tempo do Unix em um número inteiro de 64 bits. Isso já está em andamento na maioria dos sistemas operacionais de 64 bits, mas muitos sistemas podem não ser atualizados até 2038.
fonte