time(7) Miscellaneous Information Manual time(7) NUME timp - prezentare generala a timpului i a cronometrelor DESCRIERE Timp real i timp de procesare Timp real se definete ca fiind timpul masurat de la un punct fix, fie de la un punct standard din trecut (a se vedea descrierea epocii i a timpului calendaristic de mai jos), fie de la un punct (de exemplu, inceputul) din viaa unui proces (timp scurs). Timpul de procesare este definit ca fiind cantitatea de timp de procesor utilizat de un proces. Acesta este uneori imparit in componentele utilizator i sistem. Timpul CPU de utilizator este timpul petrecut executand cod in modul utilizator. Timpul CPU de sistem este timpul petrecut de nucleu executand in modul sistem in numele procesului (de exemplu, executand apeluri de sistem). Comanda time(1) poate fi utilizata pentru a determina cantitatea de timp CPU consumata in timpul execuiei unui program. Un program poate determina cantitatea de timp de procesor pe care a consumat-o folosind times(2), getrusage(2) sau clock(3). Ceasul hardware Majoritatea calculatoarelor au un ceas hardware (alimentat cu baterii) pe care nucleul il citete in momentul pornirii pentru a iniializa ceasul software. Pentru mai multe detalii, consultai rtc(4) i hwclock(8). Ceasul software, HZ i jiffies Precizia diferitelor apeluri de sistem care stabilesc temporizari (de exemplu, select(2), sigtimedwait(2)) i masoara timpul de procesare (de exemplu, getrusage(2)) este limitata de rezoluia ceasului software, un ceas intreinut de nucleu care masoara timpul in jiffies. Dimensiunea unui jiffy este determinata de valoarea constantei HZ a nucleului. Valoarea lui HZ variaza in funcie de versiunile de nucleu i de platformele hardware. Pe i386, situaia este urmatoarea: pe nucleele de pana la Linux 2.4.x inclusiv, HZ era 100, ceea ce dadea o valoare a jiffy de 0,01 secunde; incepand cu Linux 2.6.0, HZ a fost ridicat la 1000, ceea ce da o valoare a jiffy de 0,001 secunde. Incepand cu Linux 2.6.13, valoarea HZ este un parametru de configurare a nucleului i poate fi 100, 250 (valoarea implicita) sau 1000, ceea ce da o valoare a jiffy-urilor de, respectiv, 0,01, 0,004 sau 0,001 secunde. Incepand cu Linux 2.6.20, este disponibila o frecvena suplimentara: 300, un numar care se imparte in mod egal pentru frecvenele de cadre video comune (PAL, 25 Hz; NTSC, 30 Hz). Apelul de sistem times(2) este un caz special. Acesta raporteaza timpii cu o granularitate (finee) definita de constanta de nucleu USER_HZ. Aplicaiile din spaiul utilizatorului pot determina valoarea acestei constante folosind sysconf(_SC_CLK_TCK). Ceasuri de sistem i de proces; spaii de nume de timp Nucleul suporta o serie de ceasuri care masoara diferite tipuri de timp scurs i virtual (adica timpul consumat de CPU). Aceste ceasuri sunt descrise in clock_gettime(2). Cateva dintre ceasuri pot fi configurate cu ajutorul clock_settime(2). Valorile anumitor ceasuri sunt virtualizate prin spaii de nume de timp; a se vedea time_namespaces(7). Temporizatoare de inalta rezoluie Inainte de Linux 2.6.21, precizia apelurilor de sistem timer i sleep (a se vedea mai jos) era, de asemenea, limitata de dimensiunea jiffy. Incepand cu Linux 2.6.21, Linux accepta temporizatoare de inalta rezoluie (HRT), configurabile opional prin CONFIG_HIGH_RES_TIMERS. Pe un sistem care suporta HRT-uri, precizia apelurilor de sistem de tip sleep i timer nu mai este constransa de jiffy, ci poate fi atat de precisa pe cat permite echipamentul (precizia de microsecunde este tipica pentru echipamentul modern). Putei determina daca sunt acceptate temporizatoarele de inalta rezoluie verificand rezoluia returnata de un apel la clock_getres(2) sau uitandu-va la intrarile ,,resolution" din /proc/timer_list. HRT-urile nu sunt acceptate pe toate arhitecturile hardware; (suportul este oferit pe x86, ARM i PowerPC, printre altele.) Epoca Sistemele UNIX reprezinta timpul in secunde de la Epoca, 1970-01-01 00:00:00:00 +0000 (UTC). Un program poate determina timpul calendaristic prin intermediul ceasului clock_gettime(2) CLOCK_REALTIME, care returneaza timpul (in secunde i nanosecunde) care s-a scurs de la Epoca; time(2) ofera informaii similare, dar numai cu o precizie la cea mai apropiata secunda. Ora sistemului poate fi modificata cu ajutorul clock_settime(2). Timpul defalcat Anumite funcii de biblioteca utilizeaza o structura de tip tm pentru a reprezenta timpul defalcat, care stocheaza valoarea timpului separata in componente distincte (an, luna, zi, ora, minut, secunda etc.). Aceasta structura este descrisa in tm(3type), care descrie, de asemenea, funciile care fac conversia intre timpul calendaristic i timpul defalcat. Funciile de conversie intre timpul defalcat i reprezentarile de tip ir de caractere imprimabile ale timpului sunt descrise in ctime(3), strftime(3) i strptime(3). Adormirea i configurarea temporizatoarelor Diverse apeluri i funcii de sistem permit unui program sa doarma (sa suspende execuia) pentru o anumita perioada de timp; a se vedea nanosleep(2), clock_nanosleep(2) i sleep(3). Diverse apeluri de sistem permit unui proces sa configureze un temporizator care expira la un moment dat in viitor i, opional, la intervale repetate; a se vedea alarm(2), getitimer(2), timerfd_create(2) i timer_create(2). Marja temporizator Incepand cu Linux 2.6.28, este posibil sa se controleze valoarea marjei temporizatorului ,,timer slack" pentru un fir de execuie. Marja temporizatorului este durata de timp cu care nucleul poate intarzia trezirea anumitor apeluri de sistem care se blocheaza cu un timp de ateptare. Permiterea acestei intarzieri permite nucleului sa reuneasca evenimentele de trezire, reducand astfel numarul de treziri ale sistemului i economisind energie. Pentru mai multe detalii, a se vedea descrierea PR_SET_TIMERSLACK in prctl(2). CONSULTAI I date(1), time(1), timeout(1), adjtimex(2), alarm(2), clock_gettime(2), clock_nanosleep(2), getitimer(2), getrlimit(2), getrusage(2), gettimeofday(2), nanosleep(2), stat(2), time(2), timer_create(2), timerfd_create(2), times(2), utime(2), adjtime(3), clock(3), clock_getcpuclockid(3), ctime(3), ntp_adjtime(3), ntp_gettime(3), pthread_getcpuclockid(3), sleep(3), strftime(3), strptime(3), timeradd(3), usleep(3), rtc(4), time_namespaces(7), hwclock(8) TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . Pagini de manual de Linux 6.06 31 octombrie 2023 time(7)