.\" -*- coding: UTF-8 -*- .\" Copyright (c) 2006 by Michael Kerrisk .\" .\" 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 . .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 .