De unde provine timpul sistemului? (Programare, C++, Timer, Cpu)

disccip a intrebat.
a intrebat.

Sunt atât de confuz în legătură cu timpul de perete și timpul de sistem, cum obținem de fapt aceste timpuri?

De exemplu în unele limbaje de programare pur și simplu executați GetSystemTime(), acesta va returna un timp reprezentat ca microsecundă sau alte formate.

Totul provine de la ceasul numărat de CPU sau există o altă piesă de hardware care se ocupă de problema timpului?

Nu mă refer la modul în care se obțin aceste ore, ci doar vreau să știu dacă se va returna timpul procesorului sau un timp mai precis! Ar fi grozav dacă cineva ar putea explica pe scurt.

Comentarii

  • Timpul sistemului ar putea fi timpul scurs de la ultima repornire sau de la ultimul ciclu de alimentare a sistemului. –  > Por Thomas Matthews.
  • Calculatorul dumneavoastră conține un ceas precis. –  > Por meagar.
  • Această întrebare este off-topic și probabil va fi închisă, dar vezi răspunsul meu de mai jos. –  > Por Steve.
2 răspunsuri
Steve

Sistemul conține un fel de RTC (ceas în timp real).

Acesta este de obicei un circuit integrat undeva, uneori încorporat în altul (cum ar fi un CPU sau un controler de întreruperi, de exemplu, orice cu adevărat). De obicei, acestea sunt susținute de o baterie, astfel încât, atunci când sistemul nu are alimentare externă, timpul continuă să ticăie.

Multe RTC-uri funcționează folosind un oscilator cu cristal de 32.768 Hz pentru a ține evidența timpului. Acest cristal este de cuarț, de unde și denumirea de „ceas cu cuarț”.

„Timpul sistemului” ar putea însemna perioada de timp în care sistemul a fost pornit. Acest timp ar putea începe de la zero și ar putea însemna „timpul de la pornirea sistemului” sau ar putea începe cu o copie a timpului RTC la pornire și ar putea ține evidența până la oprirea sistemului (iar timpul este scris din nou în RTC). Acesta este un cronometru sau un ceas similar cu RTC, dar care ar putea funcționa la o frecvență mai mare, numărând cantități mai mici de timp la fiecare ticăit. Acest lucru poate oferi o rezoluție mai bună pentru software și hardware atunci când timpul este important.

Comentarii

  • Mulțumesc, Steve, această întrebare a fost pusă de fapt de colegii mei, care discutau despre problema sincronizării într-un produs, unul dintre ei crede că timpul CPU nu este suficient de precis, deoarece uneori este amplificat sau încetinit, așa că, de fapt, doresc să știe dacă getSystemTime va returna întotdeauna timpul CPU sau un timp mai precis de la un alt hardware. –  > Por disccip.
  • Nu sunt familiarizat cu acel API, dar o verificare rapidă a documentației nu spune nimic despre precizie. Dacă nu se precizează cât de precis este, rezoluția etc., nu există garanții. –  > Por Steve.
Bryant

GetSystemTime() – Acesta este timpul sistemului care utilizează în Windows(Microsoft).

Strâns legat de timpul sistemului este timpul de procesare, care este o numărătoare a timpului total de procesare consumat de un proces în execuție. Acesta poate fi împărțit în timp CPU de utilizator și timp CPU de sistem, reprezentând timpul petrecut în executarea codului de utilizator și, respectiv, a codului kernel de sistem. Timpii de procesare reprezintă o numărătoare a instrucțiunilor CPU sau a ciclurilor de ceas și, în general, nu au o corelație directă cu timpul de perete.

Epoca – 1 ianuarie 1601 până la 30.828 d.Hr. Rezoluție – 1 ms

Tags:, ,