time(7)                Miscellaneous Information Manual                time(7)

NAZWA
       time - przeglad czasu i czasomierzy

OPIS
   Czas rzeczywisty i czas procesu
       Czas rzeczywisty jest definiowany jako czas mierzony od jakiegos
       okreslonego punktu: albo od standardowego punktu w przeszlosci (zob.
       opis Epoki i czasu kalendarzowego ponizej), albo jakiegos punktu (np.
       poczatku) na etapie zycia procesu (czas trwania - ang. elapsed time).

       Czas procesu jest definiowany jako czas procesora uzyty przez proces.
       Czasem dzieli sie go na czesc uzytkownika i systemu. Czas procesu
       przypisany do uzytkownika jest czasem wykonywania kodu w trybie
       uzytkownika. Systemowy czas procesora jest czasem wykonywania przez
       jadro w trybie systemowym kodu w imieniu procesu (np. wykonywanie
       wywolan systemowych). Polecenie time(1) moze posluzyc do okreslenia
       czasu procesora uzytego do wykonania procesu, natomiast program moze go
       okreslic za pomoca times(2), getrusage(2) lub clock(3).

   Zegar sprzetowy
       Wiekszosc komputerow posiada (zasilany bateryjnie) zegar sprzetowy,
       odczytywany przez jadro w trakcie rozruchu, w celu zainicjowania zegara
       programowego. Wiecej szczegolow w podrecznikach rtc(4) i hwclock(8).

   Zegar programowy, stala HZ i jednostka ,,jiffy"
       Dokladnosc roznych wywolan systemowych, ktore ustawiaja czasy
       oczekiwania (np. select(2), sigtimedwait(2)) i mierza czas procesora
       (np. getrusage(2)) jest ograniczona rozdzielczoscia zegara programowego
       - zegara zarzadzanego przez jadro, ktory mierzy czas w jednostce zwanej
       ,,jiffy". Rozmiar jiffy zalezy od wartosci stalej jadra HZ.

       Wartosc HZ rozni sie pomiedzy wersjami jadra i platformami sprzetowymi.
       Na architekturze i386 sytuacja wyglada nastepujaco: do Linuksa 2.4
       wlacznie HZ wynosilo 100, co dawalo wartosc jiffy wynoszaca 0,01
       sekundy, natomiast w Linuksie 2.6.0, zwiekszono wartosc HZ do 1000, co
       dalo jiffy majace 0,001 sekundy. Od Linuksa 2.6.13, wartosc HZ jest
       parametrem konfiguracji jadra i moze wynosic 100, 250 (wartosc
       domyslna) lub 1000, co skutkuje wartosciami jiffy odpowiednio: 0,01 s;
       0,004 s lub 0,001 sekundy. Od Linuksa 2.6.20 dodano kolejna
       dopuszczalna wartosc: 300, gdyz jest to liczba dzielaca bez reszty
       popularne wartosci liczby klatek na sekunde dla wideo (uzywany w Polsce
       PAL ma 25 Hz, a amerykanski NTSC - 30 Hz).

       Wywolanie systemowe times(2) jest szczegolnym przypadkiem. Zwraca czas,
       z rozdzielczoscia okreslona stala jadra USER_HZ. Aplikacje w
       przestrzeni uzytkownika moga okreslic wartosc tej stalej za pomoca
       sysconf(_SC_CLK_TCK).

   Zegar systemowy i zegar procesu; przestrzenie nazw czasu
       Jadro obsluguje szeroki zestaw zegarow mierzacych rozne rodzaje czasu,
       ktory uplynal i wirtualnego (uzytego przez procesor). Zegary te opisano
       w clock_gettime(2). Kilka zegarow mozna resetowac za pomoca
       clock_settime(2). Wartosci okreslonych zegarow sa wirtualizowane w
       przestrzeniach nazw czasu; zob. time_namespaces(7).

   Czasomierze o wysokiej rozdzielczosci
       Przed Linuksem 2.6.21, dokladnosc wywolan systemowych czasomierza oraz
       uspienia (zob. nizej) byla rowniez ograniczona rozmiarem jiffy.

       Od Linuksa 2.6.21, jadro Linux obsluguje czasomierze o wysokiej
       rozdzielczosci (ang. high-resolution timer - HRT), konfigurowane
       opcjonalnie poprzez CONFIG_HIGH_RES_TIMERS. W systemie obslugujacym
       HRT, dokladnosc wywolan systemowych czasomierza oraz uspienia nie jest
       juz ograniczona wartoscia jiffy, lecz dokladnoscia na jaka pozwala
       sprzet (wspolczesny sprzet ma zwykle dokladnosc mikrosekund). Mozna
       sprawdzic, czy czasomierze o wysokiej rozdzielczosci sa dostepne,
       sprawdzajac rozdzielczosc zwracana przez wywolanie do clock_getres(2)
       lub przez sprawdzenie wpisow ,,resolution" w /proc/timer_list.

       Czasomierze o wysokiej rozdzielczosci nie sa obslugiwane na wszystkich
       architekturach sprzetowych (obsluga jest zapewniona m.in na x86, ARM i
       PowerPC).

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

       Program moze okreslic czas kalendarzowy za pomoca zegara CLOCK_REALTIME
       clock_gettime(2), ktore zwraca czas (w sekundach i nanosekundach), jaki
       uplynal od Epoki; time(2) udostepnia podobne informacje, ale z
       dokladnoscia tylko do najblizszej sekundy. Czas systemowy mozna zmienic
       za pomoca clock_settime(2).

   Czas rozlozony
       Okreslone funkcje biblioteczne uzywaja struktury typu tm do
       reprezentowania czasu rozlozonego (ang. broken-down time), ktory
       przechowuje wartosci czasu podzielone na ich poszczegolne czesci (rok,
       miesiac, dzien, godzina, minuta, sekunda itd.). Struktura ta jest
       opisana w podreczniku tm(3type), razem z opisem funkcji konwertujacych
       pomiedzy czasem kalendarzowym a czasem rozlozonym. Funkcje konwertujace
       pomiedzy czasem rozlozonym a wypisywalnymi lancuchami reprezentujacymi
       czas, opisano w podrecznikach ctime(3), strftime(3) i strptime(3).

   Usypianie oraz ustawianie czasomierzy
       Rozne wywolania systemowe i funkcje pozwalaja na uspienie (wstrzymanie
       wykonania) programu na okreslony czas; zob. nanosleep(2),
       clock_nanosleep(2) i sleep(3).

       Rozne wywolania systemowe zezwalaja na ustawienie stopera, ktory
       uplynie w jakims momencie w przyszlosci i opcjonalnie moze byc
       powtarzany w okreslonych interwalach; zob. alarm(2), getitimer(2),
       timerfd_create(2) i timer_create(2).

   Luz czasomierza
       Od Linuksa 2.6.28, mozna kontrolowac wartosc ,,luzu czasomierza" (ang.
       ,,timer slack") dla watku. Luz czasomierza to czas, o jaki jadro moze
       opoznic wybudzenie pewnych wywolan systemowych, ktore blokuje przy
       uzyciu czasu oczekiwania. Zezwolenie na to opoznienie pozwala jadru na
       laczenie zdarzen wybudzenia, potencjalnie redukujac liczbe systemowych
       wybudzen oraz oszczedzajac energie. Wiecej szczegolow w opisie
       PR_SET_TIMERSLACK w podreczniku prctl(2).

ZOBACZ TAKZE
       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)

TLUMACZENIE
       Autorami polskiego tlumaczenia niniejszej strony podrecznika sa: Michal
       Kulach <michal.kulach@gmail.com>

       Niniejsze tlumaczenie jest wolna dokumentacja. Blizsze informacje o
       warunkach licencji mozna uzyskac zapoznajac sie z GNU General Public
       License w wersji 3 <https://www.gnu.org/licenses/gpl-3.0.html> lub
       nowszej. Nie przyjmuje sie ZADNEJ ODPOWIEDZIALNOSCI.

       Bledy w tlumaczeniu strony podrecznika prosimy zglaszac na adres listy
       dyskusyjnej <manpages-pl-list@lists.sourceforge.net>.

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