oracular (7) time.7.gz

Provided by: manpages-pl_4.23.1-1_all bug

NAZWA

       time - przegląd czasu i czasomierzy

OPIS

   Czas rzeczywisty i czas procesu
       Czas   rzeczywisty  jest  definiowany  jako  czas  mierzony  od  jakiegoś  określonego  punktu:  albo  od
       standardowego punktu w przeszłości (zob. opis Epoki i czasu kalendarzowego poniżej), albo jakiegoś punktu
       (np. początku) na etapie życia procesu (czas trwania – ang. elapsed time).

       Czas  procesu  jest  definiowany  jako  czas  procesora użyty przez proces. Czasem dzieli się go na część
       użytkownika i systemu. Czas procesu przypisany do użytkownika  jest  czasem  wykonywania  kodu  w  trybie
       użytkownika.  Systemowy  czas  procesora  jest  czasem wykonywania przez jądro w trybie systemowym kodu w
       imieniu procesu (np. wykonywanie wywołań systemowych). Polecenie  time(1)  może  posłużyć  do  określenia
       czasu  procesora  użytego  do  wykonania  procesu, natomiast program może go określić za pomocą times(2),
       getrusage(2) lub clock(3).

   Zegar sprzętowy
       Większość komputerów posiada (zasilany bateryjnie) zegar sprzętowy, odczytywany  przez  jądro  w  trakcie
       rozruchu,  w  celu  zainicjowania  zegara  programowego.  Więcej  szczegółów  w  podręcznikach  rtc(4)  i
       hwclock(8).

   Zegar programowy, stała HZ i jednostka „jiffy”
       Dokładność  różnych  wywołań   systemowych,   które   ustawiają   czasy   oczekiwania   (np.   select(2),
       sigtimedwait(2))  i  mierzą  czas  procesora  (np.  getrusage(2)) jest ograniczona rozdzielczością zegara
       programowego – zegara zarządzanego przez jądro, który mierzy czas w  jednostce  zwanej  „jiffy”.  Rozmiar
       jiffy zależy od wartości stałej jądra HZ.

       Wartość  HZ  różni  się pomiędzy wersjami jądra i platformami sprzętowymi. Na architekturze i386 sytuacja
       wygląda następująco: do Linuksa 2.4 włącznie HZ wynosiło 100, co  dawało  wartość  jiffy  wynoszącą  0,01
       sekundy,  natomiast  w Linuksie 2.6.0, zwiększono wartość HZ do 1000, co dało jiffy mające 0,001 sekundy.
       Od Linuksa 2.6.13, wartość HZ jest parametrem  konfiguracji  jądra  i  może  wynosić  100,  250  (wartość
       domyślna)  lub  1000,  co  skutkuje  wartościami jiffy odpowiednio: 0,01 s; 0,004 s lub 0,001 sekundy. Od
       Linuksa 2.6.20 dodano kolejną dopuszczalną  wartość:  300,  gdyż  jest  to  liczba  dzieląca  bez  reszty
       popularne  wartości liczby klatek na sekundę dla wideo (używany w Polsce PAL ma 25 Hz, a amerykański NTSC
       – 30 Hz).

       Wywołanie systemowe times(2) jest szczególnym przypadkiem. Zwraca czas, z rozdzielczością określoną stałą
       jądra  USER_HZ.  Aplikacje  w  przestrzeni  użytkownika  mogą  określić  wartość  tej  stałej  za  pomocą
       sysconf(_SC_CLK_TCK).

   Zegar systemowy i zegar procesu; przestrzenie nazw czasu
       Jądro obsługuje szeroki zestaw zegarów mierzących  różne  rodzaje  czasu,  który  upłynął  i  wirtualnego
       (użytego  przez  procesor). Zegary te opisano w clock_gettime(2). Kilka zegarów można resetować za pomocą
       clock_settime(2). Wartości określonych zegarów  są  wirtualizowane  w  przestrzeniach  nazw  czasu;  zob.
       time_namespaces(7).

   Czasomierze o wysokiej rozdzielczości
       Przed Linuksem 2.6.21, dokładność wywołań systemowych czasomierza oraz uśpienia (zob. niżej) była również
       ograniczona rozmiarem jiffy.

       Od Linuksa 2.6.21, jądro Linux obsługuje czasomierze  o  wysokiej  rozdzielczości  (ang.  high-resolution
       timer  –  HRT),  konfigurowane  opcjonalnie  poprzez CONFIG_HIGH_RES_TIMERS. W systemie obsługującym HRT,
       dokładność wywołań systemowych czasomierza oraz uśpienia nie jest już ograniczona wartością  jiffy,  lecz
       dokładnością  na  jaką  pozwala  sprzęt  (współczesny  sprzęt  ma  zwykle  dokładność mikrosekund). Można
       sprawdzić, czy czasomierze o wysokiej rozdzielczości  są  dostępne,  sprawdzając  rozdzielczość  zwracaną
       przez wywołanie do clock_getres(2) lub przez sprawdzenie wpisów „resolution” w /proc/timer_list.

       Czasomierze  o  wysokiej  rozdzielczości  nie  są  obsługiwane  na  wszystkich architekturach sprzętowych
       (obsługa jest zapewniona m.in na x86, ARM i PowerPC).

   Epoka
       Systemy Uniksowe reprezentują czas w sekundach od Epoki tj. 1970-01-01 00:00:00 +0000 (UTC).

       Program może określić czas kalendarzowy za pomocą zegara CLOCK_REALTIME  clock_gettime(2),  które  zwraca
       czas  (w  sekundach i nanosekundach), jaki upłynął od Epoki; time(2) udostępnia podobne informacje, ale z
       dokładnością tylko do najbliższej sekundy. Czas systemowy można zmienić za pomocą clock_settime(2).

   Czas rozłożony
       Określone funkcje biblioteczne używają struktury typu  tm  do  reprezentowania  czasu  rozłożonego  (ang.
       broken-down  time), który przechowuje wartości czasu podzielone na ich poszczególne części (rok, miesiąc,
       dzień, godzina, minuta, sekunda itd.). Struktura ta jest opisana w podręczniku tm(3type), razem z  opisem
       funkcji  konwertujących  pomiędzy czasem kalendarzowym a czasem rozłożonym. Funkcje konwertujące pomiędzy
       czasem rozłożonym a wypisywalnymi łańcuchami reprezentującymi czas,  opisano  w  podręcznikach  ctime(3),
       strftime(3) i strptime(3).

   Usypianie oraz ustawianie czasomierzy
       Różne  wywołania  systemowe i funkcje pozwalają na uśpienie (wstrzymanie wykonania) programu na określony
       czas; zob. nanosleep(2), clock_nanosleep(2) i sleep(3).

       Różne wywołania systemowe zezwalają na ustawienie stopera, który upłynie w jakimś momencie w  przyszłości
       i   opcjonalnie   może   być   powtarzany   w   określonych  interwałach;  zob.  alarm(2),  getitimer(2),
       timerfd_create(2) i timer_create(2).

   Luz czasomierza
       Od Linuksa 2.6.28, można kontrolować wartość „luzu czasomierza”  (ang.  „timer  slack”)  dla  wątku.  Luz
       czasomierza to czas, o jaki jądro może opóźnić wybudzenie pewnych wywołań systemowych, które blokuje przy
       użyciu czasu oczekiwania. Zezwolenie na to opóźnienie  pozwala  jądru  na  łączenie  zdarzeń  wybudzenia,
       potencjalnie  redukując liczbę systemowych wybudzeń oraz oszczędzając energię. Więcej szczegółów w opisie
       PR_SET_TIMERSLACK w podręczniku prctl(2).

ZOBACZ TAKŻE

       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)

TŁUMACZENIE

       Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Michał Kułach <michal.kulach@gmail.com>

       Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać
       zapoznając się z GNU General Public License w wersji 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ lub
       nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

       Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej ⟨manpages-pl-
       list@lists.sourceforge.net⟩.