En ps
salida de, pri_baz
se calcula como pp->priority + 100
y pp->priority
es el prio
valor del núcleo. Esto se describe como
La prioridad de un proceso va de 0..MAX_PRIO
-1, la prioridad RT válida es 0..MAX_RT_PRIO
-1 y SCHED_NORMAL
/SCHED_BATCH
las tareas están en el rango MAX_RT_PRIO
..MAX_PRIO
-1. Los valores de prioridad están invertidos:menor p->prio
valor significa mayor prioridad.
El MAX_USER_RT_PRIO
El valor permite que la prioridad de RT máximo real sea independiente del valor exportado al espacio del usuario. Esto permite que los subprocesos del núcleo establezcan su prioridad en un valor superior al de cualquier tarea del usuario. Nota:MAX_RT_PRIO
no debe ser menor que MAX_USER_RT_PRIO
.
Entonces, el rango en el kernel cubre 140 valores, de 0 a MAX_PRIO
–1 (139).
Sin embargo, la prioridad mínima FIFO y RT es 1, y esto explica el valor faltante:los valores de entrada (al menos, eso se puede configurar desde el espacio de usuario, usando sched_setscheduler
) van de 1 a 99, y el kernel los convierte a prio
valores usando la fórmula MAX_RT_PRIO
– 1 – prioridad , dando valores de 0 a 98.