2009-06-10 13 views
10

w jaki sposób możemy pracować przy transakcjach z timerem z milisekundami (0.001), jak moglibyśmy podzielić sekundy tak, jak chcemy? jak moglibyśmy sobie poradzić z samą drugą ???w jaki sposób funkcja function time() informuje aktualny czas, a nawet kiedy komputer został wcześniej wyłączony?

+20

to jest Haiku? ... –

+0

Myślę, że to uzasadnione pytanie; może tylko problemy językowe? Tak czy inaczej, poszedłem do przodu i zredagowałem. –

+0

Dzięki, jestem dopiero początkującym. – Sherif

Odpowiedz

38

http://computer.howstuffworks.com/question319.htm

w komputerze (jak również inne gadżety), uprawnienia do akumulatorów chipie zwany Real Time Clock (RTC) chip. RTC jest zasadniczo zegarem kwarcowym , który działa przez cały czas, niezależnie od tego, czy komputer ma moc, czy nie. Bateria zasila ten zegar. Po rozruchu komputera, część procesu jest do zapytanie RTC, aby uzyskać prawidłowy czas i datę. Mały zegar kwarcowy, taki jak , może działać przez pięć do siedmiu lat z niewielką baterią. Następnie należy wymienić baterię.

+0

+1 dla bitu o zapytaniu do RTC przy starcie. –

0

Na płycie głównej znajduje się zegar, który tyka. Każde tiknięcie reprezentuje jednostkę czasu.

Dokładniej, zegar to zwykle kryształ kwarcu, który oscyluje na danej częstotliwości; niektóre częste częstotliwości zegara procesora wynoszą 33,33 i 40 MHz.

+0

Częstotliwość taktowania zegara czasu rzeczywistego jest zwykle zupełnie niezwiązana z częstotliwością zegara procesora. Najczęściej coś w rodzaju 32.768 kHz. –

9

Komputer będzie miał hardware clock, zasilany baterią, dzięki czemu będzie nadal tykać, nawet gdy komputer jest wyłączony. Komputer wie, jak szybko działa jego zegar, dzięki czemu może określić, kiedy mija sekunda.

Początkowo komputer nie wie, która jest godzina (tzn. Zaczyna się liczyć od zera), dlatego należy mu powiedzieć, jaki jest bieżący czas - można go ustawić w ustawieniach BIOS i zapisać w pamięci CMOS lub można go uzyskać przez Internet (np. Synchronizując z zegarami pod numerem NIST).

2

Aby odpowiedzieć na główne pytanie, zegar BIOS ma baterię na płycie głównej, tak jak mówi odpowiedź Jian. To utrzymuje czas, gdy maszyna jest wyłączona.

Aby odpowiedzieć na to, co myślę, że drugie pytanie jest, można uzyskać drugi od wartości milisekund przez robi podział całkowitą od 1000, tak jak poniżej:

second = (int) (milliseconds/1000); 

Jeśli pytasz jak my w stanie uzyskać czas z taką dokładnością, spójrz na odpowiedź Estebana ... kryształ kwarcu wibruje w pewnym okresie czasu, powiedzmy 0.00001 sekund. Właśnie robimy obwód, który zlicza wibracje. Po osiągnięciu 100 000 wibracji deklarujemy, że minęła sekunda i zaktualizowano zegar.

Możemy uzyskać dowolną dokładność, licząc wibracje w ten sposób ... jakiejkolwiek dokładności większej niż okres wibracji kryształu, którego używamy.

+0

po pierwsze, czym jest "odpowiedź Estebana"? Po drugie, źle mnie zrozumiałem Pytam o to, jak sprawić, by timer generował swoje wydarzenie, każdy 0.001 Nie pytam, jak go użyć. Pytam o to, jak to robimy, jak mogę dowolnie dzielić sekundę, jak chcę? – Sherif

+0

cóż, jeśli potrzebujesz porcji drugiego, a następnie użyj 1 sekundy = 1000 milisekund stosunek ... więc jeśli chcesz 1/2 sekundy, jego 500 milisekund, jeśli chcesz 1/5 sekund - 200 milisekund, 1/10 sekundy - 100 milisekund itd. –

3

Komputery znają czas, ponieważ podobnie jak Ty, mają zegarek cyfrowy, który oglądają od czasu do czasu.

Po uzyskaniu nowego komputera lub przeniesieniu się do nowego kraju można ustawić zegarek, lub komputer może zapytać w Internecie, która jest godzina, co pomaga zatrzymać odtwarzanie z opóźnieniem lub szybko.

Jako użytkownik komputera możesz zapytać o aktualny czas lub poprosić komputer o działanie jako budzik.Niektóre komputery mogą nawet włączyć się w określonym czasie, aby się cofnąć lub obudzić cię ulubioną melodią.

Wewnętrznie komputer może określić czas w milisekundach, mikrosekundach, a czasem nawet nanosekundach. Jednak nie jest to całkowicie dokładne, a dwa komputery obok siebie mają różne pomysły na temat czasu w nanosekundach. Ale nadal może być przydatne.

Komputer może ustawić alarm na kilka milisekund w przyszłości i zwykle robi to, aby wiedzieć, kiedy przestać myśleć o swoim programie poczty e-mail i poświęcić trochę czasu na zastanowienie się nad swoją przeglądarką. Następnie ustawia inny alarm, więc wie, że wróci do wiadomości e-mail kilka milisekund później.

Jako programista możesz również użyć tego narzędzia, na przykład możesz ustawić limit czasu na poziomie w grze, używając "timera". Albo możesz użyć timera, aby powiedzieć, kiedy powinieneś umieścić następną klatkę animacji na wyświetlaczu - być może 25 razy na sekundę (czyli co 40 milisekund).

+1

Nie mam cyfrowego zegarka. – Nosredna

+0

mavric ma. Powinieneś się wstydzić. –

+0

Jest to bardzo elegancki sposób na wyjaśnienie nowicjuszowi zachowania komputera. +1 –

7

Niektóre podsumowanie, a niektóre więcej informacji:

1) Komputer odczytuje Real-Time-Clock podczas rozruchu i wykorzystuje to, aby ustawić to wewnętrzny zegar

2) Od tego czasu, komputer używa tylko zegara procesora - nie odczytuje ponownie RTC (normalnie).

3) Wewnętrzny zegar komputera podlega dryfowi - z powodu niestabilności termicznej, fluktuacji mocy, niedokładności w znalezieniu dokładnego dzielnika przez kilka sekund, opóźnienia przerwania, promieniowania kosmicznego i fazy księżyca.

4) Wielkość dryftu zegara może być rzędu kilku sekund dziennie (dziesiątki lub setki sekund na miesiąc).

5) Większość komputerów może łączyć się z serwerem czasu (przez Internet) w celu okresowego resetowania zegara.

6) Korzystanie z serwera czasu może zwiększyć dokładność z dokładnością do kilkudziesięciu milisekund (normalnie). Mój komputer aktualizuje się co 15 minut.

0

Czas bezwzględny jest mierzony archaicznie za pomocą 32-bitowego licznika sekund z 1970 roku. Może to spowodować "problem z 2038", w którym po prostu przelewa się. Stąd też 64-bitowe interfejsy API używane na nowoczesnych platformach Windows i Unix (w tym MacOS z systemem BSD).

Dość często użytkownik komputera jest zainteresowany interwałami czasowymi, a nie czasem absolutnym od głębokiego zdarzenia. Powszechna implementacja komputera ma rzeczy zwane stoperami, które pozwalają właśnie to się wydarzyć. Te zegary mogą nawet działać, gdy komputer nie jest przeznaczony do odpytywania sprzętu w celu wybudzenia, przełączania trybów uśpienia lub wychodzenia z trybu uśpienia. Dokumenty procesorów Intela zawierają szczegółowe informacje na ich temat.