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 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.

Linux man-pages 6.8                              2 maja 2024 r.                                          time(7)