Provided by: manpages-ro-dev_4.28.0-2_all 

NUME
sched_setscheduler, sched_getscheduler - stabilește și obține politica/parametrii de planificare
BIBLIOTECA
Biblioteca C standard (libc, -lc)
SINOPSIS
#include <sched.h>
int sched_setscheduler(pid_t pid, int policy,
const struct sched_param *param);
int sched_getscheduler(pid_t pid);
DESCRIERE
Apelul de sistem sched_setscheduler() stabilește atât politica de planificare, cât și parametrii pentru
firul al cărui ID este specificat în pid. Dacă pid este egal cu zero, se vor stabili politica de
planificare și parametrii firului apelant.
Parametrii de planificare sunt specificați în argumentul param, care este un indicator către o structură
de forma următoare:
struct sched_param {
...
int sched_priority;
...
};
În implementarea actuală, structura conține un singur câmp, sched_priority. Interpretarea lui param
depinde de politica selectată.
În prezent, Linux acceptă următoarele politici de planificare „normale” (adică, fără timp real) ca valori
care pot fi specificate în policy:
SCHED_OTHER politica standard de repartizare a timpului „round-robin”;
SCHED_BATCH pentru executarea proceselor în stil „lot”; și
SCHED_IDLE pentru rularea sarcinilor de fundal cu prioritate foarte mică.
Pentru fiecare dintre politicile de mai sus, param->sched_priority trebuie să fie 0.
Sunt acceptate, de asemenea, diferite politici „în timp real”, pentru aplicații speciale cu timp critic
care necesită un control precis asupra modului în care sunt selectate pentru execuție firele de execuție.
Pentru normele care reglementează situațiile în care un proces poate utiliza aceste politici, a se vedea
sched(7). Politicile în timp real care pot fi specificate în policy sunt:
SCHED_FIFO o politică „primul intrat, primul ieșit”; și
SCHED_RR o politică „round-robin”.
Pentru fiecare dintre politicile de mai sus, param->sched_priority specifică o prioritate de planificare
pentru fir. Acesta este un număr din intervalul returnat prin apelarea sched_get_priority_min(2) și
sched_get_priority_max(2) cu policy specificat. În Linux, aceste apeluri de sistem returnează, respectiv,
1 și 99.
Începând cu Linux 2.6.32, flagul SCHED_RESET_ON_FORK poate fi SAU condițional(ORed) în policy atunci când
se apelează sched_setscheduler(). Ca urmare a includerii acestui indicator, copiii creați de fork(2) nu
moștenesc politici de planificare privilegiate. Consultați sched(7) pentru detalii.
sched_getscheduler() returnează politica curentă de planificare a firului identificat prin pid. Dacă pid
este egal cu zero, se va prelua politica firului apelant.
VALOAREA RETURNATĂ
În caz de succes, sched_setscheduler() returnează zero. La succes, sched_getscheduler() returnează
politica pentru firul de execuție (un număr întreg nenulegativ). În caz de eroare, ambele apeluri
returnează -1, iar errno este configurată pentru a indica eroarea.
ERORI-IEȘIRE
EINVAL Argumente nevalide: pid este negativ sau param este NULL.
EINVAL (sched_setscheduler()) Politica definită de policy nu este una dintre politicile recunoscute.
EINVAL (sched_setscheduler()) Parametrul param nu are sens pentru policy specificată.
EPERM Firul apelant nu are privilegiile adecvate.
ESRCH Firul de execuție al cărui identificator este pid nu a putut fi găsit.
VERSIUNI
POSIX.1 nu detaliază permisiunile de care are nevoie un fir neprivilegiat pentru a apela
sched_setscheduler(), iar detaliile variază de la un sistem la altul. De exemplu, pagina de manual
Solaris 7 precizează că ID-ul de utilizator real sau efectiv al apelantului trebuie să coincidă cu ID-ul
de utilizator real sau cu set-user-ID-ul de salvare al țintei.
Politica de planificare și parametrii sunt de fapt atribute per-fir de execuție în Linux. Valoarea
returnată în urma unui apel la gettid(2) poate fi trecută în argumentul pid. Specificarea pid ca 0 va
opera asupra atributelor firului apelant, iar trecerea valorii returnate în urma unui apel la getpid(2)
va opera asupra atributelor firului principal al grupului de fire; (dacă utilizați API-ul de fire POSIX,
atunci utilizați pthread_setschedparam(3), pthread_getschedparam(3) și pthread_setschedprio(3), în locul
apelurilor de sistem sched_*(2)).
STANDARDE
POSIX.1-2008 (dar vedeți secțiunea ERORI de mai jos).
SCHED_BATCH și SCHED_IDLE sunt specifice Linux.
ISTORIC
POSIX.1-2001.
NOTE
Detalii suplimentare privind semantica tuturor politicilor de planificare „normală” și „în timp real” de
mai sus pot fi găsite în pagina de manual sched(7). Pagina respectivă descrie, de asemenea, o politică
suplimentară, SCHED_DEADLINE, care poate fi definită numai prin intermediul sched_setattr(2).
Sistemele POSIX pe care sunt disponibile sched_setscheduler() și sched_getscheduler() definesc
_POSIX_PRIORITY_SCHEDULING în <unistd.h>.
ERORI
POSIX.1 spune că, în caz de succes, sched_setscheduler() ar trebui să returneze politica de planificare
anterioară. Linux sched_setscheduler() nu este conform cu această cerință, deoarece returnează
întotdeauna 0 în caz de succes.
CONSULTAȚI ȘI
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)
TRADUCERE
Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu
<remusgabriel.chelu@disroot.org>
Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o
versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO
RESPONSABILITATE.
Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-
ro@lists.sourceforge.net.
Pagini de manual de Linux 6.9.1 2 mai 2024 sched_setscheduler(2)