Ich habe einige Scheduling-Konzepte gelernt. Derzeit ist mein Verständnis soweit wie unten.
- Es gibt Echtzeitprozesse und Nicht-Echtzeitprozesse.
- Nicht-Echtzeit-Prozesse können
niceWerte für ihre Priorität im Bereich von -20 bis +20 haben . Der höhere positive Wert zeigt an, dass der Prozess eine niedrigere Priorität hat. - Die Echtzeit - Prozesse wird eine Nettigkeit Wert aufgelistet haben ,
-wie in dieser Antwort erklärt hier . Dies liegt hauptsächlich daran, dass die Echtzeitprozesse höhere Prioritäten haben als die Nicht-Echtzeitprozesse, und dass der Wert der Freundlichkeit für sie nicht gilt. - Jetzt kann ich
chrtdie Echtzeitattribute eines Prozesses anzeigen.
Für einen Echtzeitprozess chrtgibt die Ausgabe wie folgt aus:
chrt -p 5
pid 5's current scheduling policy: SCHED_FIFO
pid 5's current scheduling priority: 99
Wie wir für Prozess 5 sehen können , ist die Priorität 99, was die höchste ist. Die Planungsrichtlinie lautet auchSCHED_FIFO
Für einen Prozess, der nicht in Echtzeit ausgeführt wird, chrtgibt das folgende Ergebnis aus:
chrt -p 22383
pid 22383's current scheduling policy: SCHED_OTHER
pid 22383's current scheduling priority: 0
Wie wir für Prozess 22383 sehen können , ist die Priorität 0 und die Planungsrichtlinie ist SCHED_OTHER.
Fragen
- Kann ich einen Prozess in Echtzeit ausführen?
- Kann ich einen anderen Scheduling-Algorithmus als
SCHED_OTHERfür einen Nicht-Echtzeit-Prozess festlegen ? Von hier aus sehe ich auch, dass ich das Attribut für einen laufenden Prozess wie folgt ändern könnte:
chrt -p prio pidIch sehe auch,
chrt -mgibt mir die Liste der Scheduling-Algorithmen. Der Befehl gibt mir die Ausgabe als,SCHED_OTHER min/max priority : 0/0 SCHED_FIFO min/max priority : 1/99 SCHED_RR min/max priority : 1/99 SCHED_BATCH min/max priority : 0/0 SCHED_IDLE min/max priority : 0/0Nun, wie oben vorgeschlagen, wenn ich festlegen,
chrt -p 55 22383welcher Algorithmus verwendet wird?