Provided by: manpages-pl-dev_4.26.0-1_all 

NAZWA
sched_setscheduler, sched_getscheduler - ustawia i pobiera algorytm/parametry szeregowania zadań
BIBLIOTEKA
Standardowa biblioteka C (libc, -lc)
SKŁADNIA
#include <sched.h>
int sched_setscheduler(pid_t pid, int policy,
const struct sched_param *param);
int sched_getscheduler(pid_t pid);
OPIS
Wywołanie systemowe sched_getscheduler ustawia zarówno politykę jak i parametry szeregowania zadań wątku,
którego identyfikator podano w pid. Jeśli pid jest równe zeru, to ustawiana jest polityka i parametry
szeregowania zadań wątku wywołującego.
Parametry szeregowania zadań są określane w argumencie param, który jest wskaźnikiem do struktury w
następującej postaci:
struct sched_param {
...
int sched_priority;
...
};
W bieżącej implementacji, struktura zawiera tylko jedno pole: sched_priority. Interpretacja param zależy
od wybranej polityki.
Obecnie, Linux obsługuje następujące „zwykłe” (tj. nie czasu rzeczywistego) polityki przydzielania zadań,
które można podać jako wartości policy:
SCHED_OTHER standardowa polityka dzielenia czasu za pomocą planowania rotacyjnego
SCHED_BATCH do wykonywania procesów w stylu „wsadowym” oraz
SCHED_IDLE do uruchamiania zadań tła, o bardzo niskim priorytecie.
Dla każdej z powyższych polityk, param->sched_priority musi wynosić 0.
Obsługiwane są również różne polityki „czasu rzeczywistego”, nadające się do specjalnych aplikacji, gdzie
krytyczna jest precyzyjna kontrola nad sposobem, w jaki działające wątki są wybierane do wykonania. Aby
dowiedzieć się więcej o zasadach regulujących okoliczności, w jakich wątki procesu mogą używać tych
polityk, należy zapoznać się z podręcznikiem sched(7). Polityki czasu rzeczywistego, jakie można określić
w policy to:
SCHED_FIFO polityka: pierwszy na wejściu, pierwszy na wyjściu oraz
SCHED_RR polityka planowania rotacyjnego.
Dla każdej z powyższych polityk, param->sched_priority określa priorytet szeregowania zadań dla wątku.
Jest to liczba w zakresie zwracanym przez wywołanie sched_get_priority_min(2) i sched_get_priority_max(2)
z podaną policy. W Linuksie te wywołania systemowe zwracają, odpowiednio: 1 i 99.
Od Linuksa 2.6.32, znacznik SCHED_RESET_ON_FORK może być zsumowany logicznie (OR) w policy, przy
wywoływaniu sched_setscheduler(). Dzięki podaniu tego znacznika, potomkowie utworzeni przez fork(2) nie
dziedziczą uprzywilejowanych polityk szeregowania zadań. Więcej informacji w podręczniku sched(7).
sched_getscheduler() zwraca bieżącą politykę szeregowania zadań, która dotyczy wątku określonego przez
pid. Jeśli pid jest równe zeru, to pobierana jest polityka dotycząca wątku wywołującego.
WARTOŚĆ ZWRACANA
Po pomyślnym zakończeniu, sched_setscheduler() zwraca zero. Po pomyślnym zakończeniu, sched_getscheduler
zwraca politykę dla wątku (nieujemna liczba całkowita). Po błędzie, oba wywołania zwracają -1 i ustawiają
errno wskazując błąd.
BŁĘDY
EINVAL Nieprawidłowe argumenty: pid jest ujemne lub param wynosi NULL.
EINVAL (sched_setscheduler()) policy nie jest jedną ze znanych polityk.
EINVAL (sched_setscheduler()) param nie ma sensu w podanej policy.
EPERM Wątek wywołujący nie ma odpowiednich przywilejów.
ESRCH Nie znaleziono wątku o identyfikatorze równym pid.
WERSJE
POSIX.1 nie określa szczegółowo, jakich uprawnień wymaga wątek nieuprzywilejowany, do wywołania
sched_setscheduler(), a detale te różnią się między systemami. Przykładowo, strona podręcznika systemu
Solaris 7 informuje, że rzeczywisty lub efektywny identyfikator użytkownika wywołującego musi odpowiadać
rzeczywistemu identyfikatorowi użytkownika lub zapisanemu set-user-ID celu.
Polityka i parametry szeregowania zadań są w Linuksie w rzeczywistości atrybutami przypisanymi wątkowi.
Wartość zwracaną przez wywołanie gettid(2) można przekazać w argumencie pid. Podanie pid równego 0 będzie
oznaczało działanie na atrybutach wątku wywołującego, a przekazanie wartości zwróconej przez wywołanie
getpid(2), będzie oznaczało działanie na atrybutach głównego wątku w grupie wątku (jeśli korzysta się z
interfejsu programistycznego wątków POSIX, należy korzystać z pthread_setschedparam(3),
pthread_getschedparam(3) i pthread_setschedprio(3), zamiast z wywołań systemowych sched_*(2)).
STANDARDY
POSIX.1-2008 (lecz zob. USTERKI poniżej).
SCHED_BATCH() i SCHED_IDLE() są typowo linuksowe.
HISTORIA
POSIX.1-2001.
UWAGI
Dalsze szczegóły odnośnie semantyki wszystkich powyższych polityk szeregowania zadań „zwykłych” i „czasu
rzeczywistego” opisano w podręczniku systemowym sched(7). Zawarto tam także opis dodatkowej polityki,
SCHED_DEADLINE, którą można ustawić jedynie za pomocą sched_setattr(2).
Systemy POSIX-owe, na których dostępne są sched_setscheduler() i sched_getscheduler(), definiują w
<unistd.h> _POSIX_PRIORITY_SCHEDULING.
USTERKI
POSIX.1 wskazuje, że przy powodzeniu, sched_setscheduler() powinno zwrócić poprzednią politykę
szeregowania zadań. sched_setscheduler() w Linuksie nie jest zgodne z tym wymaganiem, ponieważ w
przypadku powodzenia zawsze zwraca 0.
ZOBACZ TAKŻE
chrt(1), nice(2), sched_get_priority_max(2), sched_get_priority_min(2), sched_getaffinity(2),
sched_getattr(2), sched_getparam(2), sched_rr_get_interval(2), sched_setaffinity(2), sched_setattr(2),
sched_setparam(2), sched_yield(2), setpriority(2), capabilities(7), cpuset(7), sched(7)
TŁUMACZENIE
Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Przemek Borys <pborys@dione.ids.pl>,
Andrzej Krzysztofowicz <ankry@green.mf.pg.gda.pl> i 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.9.1 2 maja 2024 r. sched_setscheduler(2)