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