W jaki sposób komputery śledzą czas?

68

W jaki sposób komputery są w stanie podać prawidłową godzinę i datę za każdym razem?

Ilekroć zamykam komputer (zamykam go), wszystkie połączenia i procesy w nim zatrzymują się. Jak to się dzieje, że kiedy ponownie otwieram komputer, podaje on dokładny właściwy czas? Czy komputer nie wyłącza się całkowicie po wyłączeniu? Czy nadal działają w nim jakieś procesy? Ale w jaki sposób mój laptop wskazuje prawidłowy czas, kiedy wyjmuję baterię (a tym samym wymuszam zatrzymanie wszystkich procesów) i uruchamiam ją ponownie po kilku dniach?

tatan
źródło
3
Czy to pytanie naprawdę dotyczy tematu tej witryny? Wydaje mi się to bardziej odpowiednie dla superużytkownika .
Ilmari Karonen
3
@IlmariKaronen To wydaje się liczyć jako pytanie o „architekturę komputerową”, jeśli dobrze rozumiem ten termin.
PyRulez

Odpowiedzi:

96

Komputery mają „zegar czasu rzeczywistego” - specjalne urządzenie sprzętowe (np. Zawierające kryształ kwarcu) na płycie głównej, które utrzymuje czas. Zawsze jest zasilany, nawet po wyłączeniu komputera. Ponadto płyta główna ma niewielką baterię, która służy do zasilania zegara, nawet po odłączeniu komputera od zasilania. Bateria nie trwa wiecznie, ale potrwa co najmniej kilka tygodni. Pomaga to komputerowi śledzić czas, nawet gdy komputer jest wyłączony. Zegar czasu rzeczywistego nie potrzebuje dużo energii, więc nie marnuje energii. Jeśli wyjmiesz baterię zegara oprócz wyjęcia głównej baterii i odłączenia kabla zasilającego, komputer straci czas i poprosi o podanie godziny i daty po ponownym uruchomieniu komputera.

Aby dowiedzieć się więcej, zobacz Zegar czasu rzeczywistego i baterię CMOS oraz Dlaczego moja płyta główna ma baterię .

Ponadto na wielu komputerach po podłączeniu komputera do połączenia internetowego system operacyjny znajdzie serwer czasu w sieci i zapyta go o bieżący czas. System operacyjny może to wykorzystać do bardzo dokładnego ustawienia lokalnego zegara komputera. Korzysta z protokołu Network Time Protocol , zwanego także NTP.

DW
źródło
1
Czy system operacyjny może ustawić czas BIOS? Mam na myśli to, że jeśli wymuszę zresetowanie zegara sprzętowego, a następnie uruchomię i połączę się z NTP lub sam ustawię zegar, czy BIOS to rozpozna?
kot
1
Tak. Zmiana czasu systemowego systemu operacyjnego ustawia zegar czasu rzeczywistego, czyli czas BIOS. Wewnętrznie zegar odlicza liczbę sekund (lub milisekund) od Epoki (zwykle 1 stycznia 1970 r. 00:00), więc nie wykonuje wiele pracy i może być zasilany baterią wielkości monety przez lata. Funkcje wyższego poziomu w systemie operacyjnym wykonują konwersję, która liczy się do wyświetlenia daty / godziny.
Chris Nava,
Kryształ kwarcu nie jest specjalnym urządzeniem sprzętowym, które śledzi czas (chociaż jest to jeden element).
immibis
1
@tatan nie, telefon jest cały czas zasilany z baterii. Jest to w większości takie samo, jak w przypadku włączania komputera przez naciśnięcie jego przycisku zasilania, gdy komputer ma zostać wyłączony (ale nie odłączony od gniazdka elektrycznego).
Ruslan
1
Przeformułuję ostatni akapit, zmieniając komputery na systemy operacyjne. Każdy komputer, który łączy się z Internetem, może tego nie robić i na odwrót - jest to zadanie systemu operacyjnego, a nie komputery PC (co oznacza sprzęt).
MatthewRock
13

Jeśli wyjmiesz baterię z płyty głównej, komputer nie będzie mógł określić godziny.

Dotyczy to również telefonów komórkowych. Jeśli pozwolisz, aby telefon rozładował się, a następnie nie ładowałeś go dłużej niż przez kilka tygodni, „zapomnisz o czasie”, ponieważ mała bateria pomocnicza jest całkowicie rozładowana i nic nie włącza się na zegarze czasu rzeczywistego.

Możesz spróbować włączyć stary telefon komórkowy, jeśli go posiadasz, i sprawdź go sam, aby zobaczyć, że „zapomniałeś czasu”.

Tak wygląda bateria. https://yandex.com/images/touch/search?text=mobo%20battery&source=tabbar

Musiałem go kupić kilka razy, kiedy mój zaczął trwać krócej niż dzień. Musiałem skonfigurować zegar za każdym razem, gdy włączałem komputer.

yoyo_fun
źródło
3
Wiele systemów operacyjnych korzysta teraz z protokołu NTP (Network Time Protocol) i może go używać do resetowania się automatycznie podczas uruchamiania, więc tak naprawdę nie potrzebują wbudowanego zegara.
James Snell
3
@JamesSnell Spowoduje to jednak bałagan w znacznikach czasu w plikach dziennika, a także w każdym pliku zmodyfikowanym podczas rozruchu przed uruchomieniem NTP.
kasperd
@kasperd - znaczniki czasu naprawdę nie są tak ważne, jak kiedyś, ponieważ wiele systemów używa innych metadanych (wersjonowanie). Spójrz na dzienniki rozruchu z systemów, które nie mają routerów RTC lub Raspberry Pi, i logują się, kiedy czas został zaktualizowany (i co zrobić). Może to być ważniejsze w odłączonych systemach, ale z czasem staje się to mniej ważne.
James Snell
1
@JamesSnell Mam kilka komputerów jednopłytkowych zdolnych do obsługi standardowego systemu operacyjnego x86, ale brakuje im RTC z podtrzymaniem bateryjnym. W końcu kazałem im uruchomić absolutnie minimalny stos sieci z ramdysku, aby uruchomić `ntpdate 'przed jakimkolwiek dostępem do dysku.
kasperd
@JamesSnell Tak, ale laptopy i tablety łączą się z Wi-Fi po uruchomieniu (przynajmniej większość z nich to robi) i nie mają połączenia Ethernet, więc bateria jest nadal używana w prawie wszystkich komputerach. Również komputery stacjonarne również nie mają dostępu do Internetu przez cały czas. Niektóre osoby zamykają routery w nocy lub po prostu nie korzystają z Internetu przez cały czas, jeśli chcą grać w gry lub oglądać filmy i nie włączają routera. Nie każdy chce być cały czas podłączony do Internetu.
yoyo_fun
2

Po uruchomieniu system Windows uzyskuje bezpośredni dostęp do pamięci zegara czasu rzeczywistego (RTC) i używa jego wartości daty i godziny do ustawienia daty i godziny komputera. Przerwania czasowe utrzymują czas komputera, gdy system Windows jest uruchomiony. Demon czasu w systemie Windows uruchamia się mniej więcej raz na godzinę po uruchomieniu systemu Windows. Demon czasu porównuje czas w systemie Windows z czasem w RTC. Jeśli te dwa czasy są oddalone o więcej niż jedną minutę, system Windows zmienia godzinę i datę w celu dopasowania do RTC. Nie można zmienić interwału czasowego działania demona czasu.

Jeśli korzystasz z usługi synchronizacji czasu, takiej jak narzędzie TimeServ.exe zawarte w zestawie Windows NT 4.0 Resource Kit, narzędzie aktualizuje czas w systemie Windows i RTC komputera. Jeśli Usługa czasu systemu Windows działa na komputerze z systemem Windows 2000, demon czasu w systemie Windows nie może działać mniej więcej raz na godzinę po uruchomieniu systemu Windows.

Aby uzyskać więcej informacji, odwiedź ten link: http://msdn2.microsoft.com/en-us/library/ms724936.aspxhttp://msdn2.microsoft.com/en-us/library/ms724942.aspx

Budhathoki Bijaya
źródło
Ciekawy. Jak więc system Windows określa bieżący dokładny czas (w mikrosekundach) odpowiedzi na wywołanie programu (np. Time.time () w pythonie) i jak często i jak aktualizuje swoją bieżącą wartość na ten czas?
jacanterbury,