Man page - sched_setscheduler(2)

Packages contains this manual

Available languages:

en fr pl ja ru ro

Manual

sched_setscheduler

NAZWA
BIBLIOTEKA
SKŁADNIA
OPIS
WARTOŚĆ ZWRACANA
BŁĘDY
WERSJE
STANDARDY
HISTORIA
UWAGI
USTERKI
ZOBACZ TAKŻE
TŁUMACZENIE

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

Tłumaczenie niniejszej strony podręcznika: 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 .