Dans ps
la sortie, pri_baz
est calculé comme pp->priority + 100
, et pp->priority
est le prio
valeur du noyau. Ceci est décrit comme
La priorité d'un processus va de 0..
MAX_PRIO
-1, la priorité RT valide est 0..MAX_RT_PRIO
-1, etSCHED_NORMAL
/SCHED_BATCH
les tâches sont dans la plageMAX_RT_PRIO
..MAX_PRIO
-1. Les valeurs de priorité sont inversées :p->prio
inférieur la valeur signifie une priorité plus élevée.Le
MAX_USER_RT_PRIO
permet à la priorité maximaleRT réelle d'être séparée de la valeur exportée dans l'espace utilisateur. Cela permet aux threads du noyau de définir leur priorité sur une valeur supérieure à toute tâche utilisateur. Remarque :MAX_RT_PRIO
ne doit pas être inférieur àMAX_USER_RT_PRIO
.
Ainsi, la plage dans le noyau couvre 140 valeurs, de 0 à MAX_PRIO
–1 (139).
Cependant, la priorité minimale FIFO et RT est de 1, ce qui explique la valeur manquante :les valeurs d'entrée (au moins, qui peuvent être définies depuis l'espace utilisateur, en utilisant sched_setscheduler
) vont de 1 à 99, et le noyau les convertit en prio
valeurs utilisant la formule MAX_RT_PRIO
– 1 – priorité , donnant des valeurs de 0 à 98.