In ps
l'output di , pri_baz
viene calcolato come pp->priority + 100
e pp->priority
è il prio
valore dal kernel. Questo è descritto come
La priorità di un processo va da 0..
MAX_PRIO
-1, la priorità RT valida è 0..MAX_RT_PRIO
-1 eSCHED_NORMAL
/SCHED_BATCH
le attività sono comprese nell'intervalloMAX_RT_PRIO
..MAX_PRIO
-1. I valori di priorità sono invertiti:inferiorep->prio
valore significa priorità più alta.Il
MAX_USER_RT_PRIO
value consente di separare l'attuale priorità maximumRT dal valore esportato nello spazio utente. Ciò consente ai thread del kernel di impostare la propria priorità su un valore superiore a qualsiasi attività dell'utente. Nota:MAX_RT_PRIO
non deve essere inferiore aMAX_USER_RT_PRIO
.
Quindi l'intervallo nel kernel copre 140 valori, da 0 a MAX_PRIO
–1 (139).
Tuttavia, la priorità FIFO e RT minima è 1, e questo spiega il valore mancante:i valori di input (almeno, che possono essere impostati dallo spazio utente, usando sched_setscheduler
) vanno da 1 a 99 e il kernel li converte in prio
utilizzando la formula MAX_RT_PRIO
– 1 – priorità , dando valori da 0 a 98.