Como os computadores controlam o tempo?

69

Como os computadores conseguem dizer a hora e a data corretas todas as vezes?

Sempre que fecho o computador (desligá-lo), todas as conexões e processos internos são interrompidos. Como é que, quando abro o computador novamente, indica a hora exata exata? O computador não desliga completamente quando eu o desligo? Ainda existem alguns processos em execução? Mas como o meu laptop informa a hora correta quando eu pego a bateria (e, assim, paro à força todos os processos) e a reinicio depois de alguns dias?

tatan
fonte
3
Esta questão está realmente no tópico deste site? Parece mais apropriado para Super Usuário para mim.
Ilmari Karonen 28/03
3
@IlmariKaronen Parece ser uma pergunta sobre "arquitetura de computadores", se estou entendendo o termo corretamente.
PyRulez 29/03/16

Respostas:

96

Os computadores possuem um "relógio em tempo real" - um dispositivo de hardware especial (por exemplo, contendo um cristal de quartzo) na placa-mãe que mantém o tempo. É sempre ligado, mesmo quando você desliga o computador. Além disso, a placa-mãe possui uma pequena bateria usada para alimentar o dispositivo de relógio, mesmo quando você desconecta o computador da energia. A bateria não dura para sempre, mas dura pelo menos algumas semanas. Isso ajuda o computador a acompanhar o tempo, mesmo quando o computador está desligado. O relógio em tempo real não precisa de muita energia, portanto não está desperdiçando energia. Se você retirar a bateria do relógio, além de remover a bateria principal e desconectar o cabo de alimentação, o computador perderá a noção do tempo e solicitará que você insira a hora e a data em que você reinicia o computador.

Para saber mais, consulte Relógio em tempo real e bateria CMOS e Por que minha placa-mãe possui bateria ?

Além disso, em muitos computadores, quando você conecta o computador a uma conexão com a Internet, o sistema operacional localiza um servidor de horário na rede e consulta o servidor de horário para o horário atual. O sistema operacional pode usar isso para definir com precisão o relógio local do seu computador. Isso usa o Network Time Protocol , também chamado NTP.

DW
fonte
11
Um sistema operacional pode definir o tempo do BIOS? O que quero dizer é que, se eu reiniciar à força o relógio do hardware, inicializar e conectar ao NTP ou definir o relógio, o BIOS reconhecerá isso?
cat
11
Sim. Alterar a hora do sistema do sistema operacional define o relógio em tempo real, também conhecido como hora do BIOS. Internamente, o relógio está contando o número de segundos (ou milissegundos) desde a época (geralmente 1 de janeiro de 1970 às 00:00), por isso não está fazendo muito trabalho e pode ser alimentado por uma bateria do tamanho de uma moeda por anos. As funções de nível superior no SO fazem o trabalho de conversão que conta para uma data / hora para exibição.
Chris Nava
O cristal de quartzo não é o dispositivo de hardware especial que acompanha o tempo (embora seja um componente).
user253751
11
@tatan não, o telefone é alimentado o tempo todo por sua bateria. É basicamente o mesmo que você consegue ligar o PC pressionando o botão liga / desliga quando o PC deveria ter sido desligado (mas não desconectado da tomada).
Ruslan
11
Eu reformularia o último parágrafo, mudando computadores para sistemas operacionais. Qualquer PC que se conecta à Internet pode não fazê-lo e vice-versa - é tarefa do SO fazer isso, não PCs (implicando hardware).
MatthewRock
13

Se você remover a bateria da placa-mãe, o computador não terá como saber as horas.

Este também é o caso de telefones celulares. Se você deixar um telefone descarregar e depois não recarregá-lo por mais de algumas semanas, ele também "esquecerá o tempo", porque a pequena bateria auxiliar está descarregada completamente e nada está ligando no relógio em tempo real.

Você pode tentar ligar um telefone celular antigo, se tiver um, e verificar por si mesmo se "esqueceu a hora".

É assim que a bateria fica. https://yandex.com/images/touch/search?text=mobo%20battery&source=tabbar

Eu tive que comprar uma algumas vezes quando a minha começou a durar menos de um dia. Eu tinha que configurar o relógio toda vez que ligava o PC.

yoyo_fun
fonte
3
Muitos sistemas operacionais agora usam NTP (Network Time Protocol) e podem usá-lo para se redefinir automaticamente na inicialização, para que não precisem realmente do relógio embutido.
James Snell
3
@JamesSnell Isso, no entanto, atrapalha os carimbos de hora nos arquivos de log, bem como qualquer arquivo modificado durante a inicialização antes do NTP ser iniciado.
kasperd
@kasperd - os carimbos de data e hora realmente não são tão importantes quanto costumavam ser, pois muitos sistemas usam outros metadados (controle de versão). Observe os logs de inicialização de sistemas que não possuem um RTC, como roteadores ou o raspberry pi, e eles registram quando a hora é atualizada (e o que fazer). Pode ser mais importante em sistemas desconectados, mas isso está se tornando menos importante ao longo do tempo.
James Snell
11
@JamesSnell Eu tenho vários computadores de placa única capazes de executar um sistema operacional x86 padrão, mas eles não possuem um RTC com bateria. No final, eu os mandei executar uma pilha de rede mínima absoluta de dentro de um ramdisk para executar o `ntpdate 'antes que qualquer acesso ao disco ocorresse.
kasperd
@JamesSnell Sim, mas os laptops e tablets se conectam ao wifi após serem inicializados (pelo menos a maioria deles faz isso) e eles não têm conexão Ethernet, portanto a bateria ainda é usada em quase todos os computadores. Também os computadores de mesa também não têm internet o tempo todo. Algumas pessoas fecham seus roteadores à noite ou simplesmente não usam a Internet o tempo todo, se desejam jogar ou assistir a um filme e não ligam o roteador. Nem todo mundo quer estar conectado à Internet o tempo todo.
precisa saber é o seguinte
2

Quando você inicia o Windows, ele obtém acesso direto à memória do Real Time Clock (RTC) e usa seus valores de data e hora para definir a data e a hora do computador. Interrupções de timer mantêm o tempo do computador quando o Windows está sendo executado. Um Time Daemon no Windows é executado aproximadamente uma vez a cada hora após a inicialização do Windows. O Time Daemon compara a hora no Windows com a hora no RTC. Se as duas horas estiverem com mais de um minuto de diferença, o Windows alterará a hora e a data para corresponder ao RTC. Você não pode alterar o intervalo de tempo para que o Time Daemon seja executado.

Se você usar um serviço de sincronização de horário, como a ferramenta TimeServ.exe incluída no Windows NT 4.0 Resource Kit, a ferramenta atualizará o horário no Windows e no RTC do computador. Se o Windows Time Service for executado em um computador com Windows 2000, o Time Daemon no Windows não poderá ser executado aproximadamente uma vez a cada hora após a inicialização do Windows.

Para obter mais detalhes, visite este link: http://msdn2.microsoft.com/en-us/library/ms724936.aspxhttp://msdn2.microsoft.com/en-us/library/ms724942.aspx

Budhathoki Bijaya
fonte
Interessante. Então, como o Windows determina o tempo exato atual (em microssegundos) para responder a uma chamada de um programa (por exemplo, time.time () em python) e com que frequência e como ele atualiza seu valor atual para o tempo?
jacanterbury