.\" -*- coding: UTF-8 -*-
.\" Copyright (c) 2006 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\" 2008-06-24, mtk: added some details about where jiffies come into
.\"     play; added section on high-resolution timers.
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.TH time 7 "22 stycznia 2023 r." "Linux man\-pages 6.05.01" 
.SH NAZWA
time \- przegląd czasu i czasomierzy
.SH OPIS
.SS "Czas rzeczywisty i czas procesu"
\fICzas rzeczywisty\fP 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 (\fIczas trwania\fP \[en] ang. elapsed time).
.PP
\fICzas procesu\fP jest definiowany jako czas procesora użyty przez
proces. Czasem dzieli się go na część \fIużytkownika\fP i \fIsystemu\fP. 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 \fBtime\fP(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ą \fBtimes\fP(2), \fBgetrusage\fP(2) lub \fBclock\fP(3).
.SS "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 \fBrtc\fP(4) i \fBhwclock\fP(8).
.SS "Zegar programowy, stała HZ i jednostka \[Bq]jiffy\[rq]"
.\" semtimedop(), mq_timedwait(), io_getevents(), poll() are the same
.\" futexes and thus sem_timedwait() seem to use high-res timers.
Dokładność różnych wywołań systemowych, które ustawiają czasy oczekiwania
(np. \fBselect\fP(2), \fBsigtimedwait\fP(2)) i mierzą czas procesora
(np. \fBgetrusage\fP(2)) jest ograniczona rozdzielczością \fIzegara programowego\fP \[en] zegara zarządzanego przez jądro, który mierzy czas w
jednostce zwanej \[Bq]\fIjiffy\fP\[rq]. Rozmiar jiffy zależy od wartości stałej
jądra \fIHZ\fP.
.PP
Wartość \fIHZ\fP 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 \[en]
30 Hz).
.PP
.\" glibc gets this info with a little help from the ELF loader;
.\" see glibc elf/dl-support.c and kernel fs/binfmt_elf.c.
.\"
Wywołanie systemowe \fBtimes\fP(2) jest szczególnym przypadkiem. Zwraca czas, z
rozdzielczością określoną stałą jądra \fIUSER_HZ\fP. Aplikacje w przestrzeni
użytkownika mogą określić wartość tej stałej za pomocą
\fIsysconf(_SC_CLK_TCK)\fP.
.SS "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
\fBclock_gettime\fP(2). Kilka zegarów można resetować za pomocą
\fBclock_settime\fP(2). Wartości określonych zegarów są wirtualizowane w
przestrzeniach nazw czasu; zob. \fBtime_namespaces\fP(7).
.SS "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.
.PP
Od Linuksa 2.6.21, jądro Linux obsługuje czasomierze o wysokiej
rozdzielczości (ang. high\-resolution timer \[en] HRT), konfigurowane
opcjonalnie poprzez \fBCONFIG_HIGH_RES_TIMERS\fP. 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 \fBclock_getres\fP(2) lub przez sprawdzenie wpisów
\[Bq]resolution\[rq] w \fI/proc/timer_list\fP.
.PP
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).
.SS Epoka
Systemy Uniksowe reprezentują czas w sekundach od \fIEpoki\fP tj. 1970\-01\-01
00:00:00 +0000 (UTC).
.PP
.\"
Program może określić \fIczas kalendarzowy\fP za pomocą zegara
\fBCLOCK_REALTIME\fP \fBclock_gettime\fP(2), które zwraca czas (w sekundach i
nanosekundach), jaki upłynął od Epoki; \fBtime\fP(2) udostępnia podobne
informacje, ale z dokładnością tylko do najbliższej sekundy. Czas systemowy
można zmienić za pomocą \fBclock_settime\fP(2).
.SS "Czas rozłożony"
Określone funkcje biblioteczne używają struktury typu \fItm\fP do
reprezentowania \fIczasu rozłożonego\fP (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 \fBtm\fP(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 \fBctime\fP(3), \fBstrftime\fP(3) i \fBstrptime\fP(3).
.SS "Usypianie oraz ustawianie czasomierzy"
Różne wywołania systemowe i funkcje pozwalają na uśpienie (wstrzymanie
wykonania) programu na określony czas; zob. \fBnanosleep\fP(2),
\fBclock_nanosleep\fP(2) i \fBsleep\fP(3).
.PP
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. \fBalarm\fP(2), \fBgetitimer\fP(2),
\fBtimerfd_create\fP(2) i \fBtimer_create\fP(2).
.SS "Luz czasomierza"
Od Linuksa 2.6.28, można kontrolować wartość \[Bq]luzu czasomierza\[rq]
(ang. \[Bq]timer slack\[rq]) 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
\fBPR_SET_TIMERSLACK\fP w podręczniku \fBprctl\fP(2).
.SH "ZOBACZ TAKŻE"
.ad l
.nh
\fBdate\fP(1), \fBtime\fP(1), \fBtimeout\fP(1), \fBadjtimex\fP(2), \fBalarm\fP(2),
\fBclock_gettime\fP(2), \fBclock_nanosleep\fP(2), \fBgetitimer\fP(2),
\fBgetrlimit\fP(2), \fBgetrusage\fP(2), \fBgettimeofday\fP(2), \fBnanosleep\fP(2),
\fBstat\fP(2), \fBtime\fP(2), \fBtimer_create\fP(2), \fBtimerfd_create\fP(2),
\fBtimes\fP(2), \fButime\fP(2), \fBadjtime\fP(3), \fBclock\fP(3),
\fBclock_getcpuclockid\fP(3), \fBctime\fP(3), \fBntp_adjtime\fP(3),
\fBntp_gettime\fP(3), \fBpthread_getcpuclockid\fP(3), \fBsleep\fP(3), \fBstrftime\fP(3),
\fBstrptime\fP(3), \fBtimeradd\fP(3), \fBusleep\fP(3), \fBrtc\fP(4),
\fBtime_namespaces\fP(7), \fBhwclock\fP(8)
.PP
.SH TŁUMACZENIE
Autorami polskiego tłumaczenia niniejszej strony podręcznika są:
Michał Kułach <michal.kulach@gmail.com>
.
.PP
Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach
licencji można uzyskać zapoznając się z
.UR https://www.gnu.org/licenses/gpl-3.0.html
GNU General Public License w wersji 3
.UE
lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.
.PP
Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy
dyskusyjnej
.MT manpages-pl-list@lists.sourceforge.net
.ME .
