# 1.103.6

# Modifizeren von Prozeßprioritäten

Beschreibung: Prüfungskandidaten sollten in der Lage sein, Prozeßprioritäten zu verwalten. Dieses Lernziel beinhaltet das Ausführen von Prozessen mit höherer oder niedrigerer Priorität, das Bestimmen der Priorität eines Prozesses und das Ändern der Priorität eines laufenden Prozesses.

Die wichtigsten Dateien, Bezeichnungen und Anwendungen:

- nice
- ps
- renice
- top

### Ausführen von Programmen mit verschiedenen Prioritäten

Prozesse, die ohne spezielle Handhabe gestartet werden, haben eine "normale" Priorität, das heißt, sie sind mit einem sogenannten Nice-Wert von 0 ausgestattet. Ein Prozess ist dann "nice" (engl. für nett), wenn er anderen Prozessen mehr Rechenzeit übriglässt, also selber weniger verbraucht.

Sowohl das Programm ps, als auch top sind in der Lage, die NICE-Werte eines Prozesses darzustellen.

Ein normaler User kann Programme mit einem höheren Nice-Wert starten, indem er das Programm nice benutzt. Dieses Programm startet Prozesse mit einem veränderten Nice-Wert, also mit mehr oder weniger Priorität.

Hoher Nice-Wert heißt geringere Priorität

Der Superuser (root) kann Prozesse auch mit negativen Nice-Werten starten, also ihre Priorität erhöhen.

Der maximale Nice-Wert ist 19, der minimale -20.

Das Programm `nice` selbst ist einfach anzuwenden, es wird aufgerufen mit dem gewünschten Nice-Wert und der Angabe, welches Programm gestartet werden soll. Wollen wir also etwa als Normaluser das Programm `foo` mit einem Nicewert von 15 starten, dann schreiben wir:

      nice -n15 foo

oder einfach

      nice -15 foo

Vorsicht: im letzten Beispiel geht es nicht um -15 sondern um 15. Der Bindestrich hat nur die Aufgabe, dem nice-Programm klar zu machen, daß es sich nicht um das Programm 15 handelt! Damit der Superuser auch negative Werte angeben kann, muß er den Parameter -n benutzen. Damit könnte er also schreiben:

      nice -n-15 foo

und der Nice-Wert wäre auf -15 gesetzt.

Das Programm nice ist nur gemacht, um Programme mit unterschiedlichen Prioritäten zu starten. Ein nachträgliches Ändern der Priorität ist damit nicht möglich.

### Festlegen und Verändern der Prioritäten laufender Prozesse

Um die Priorität bzw. den Nice-Wert bereits laufender Prozesse zu verändern, gibt es zwei Möglichkeiten. Zum einen das speziell zu diesem Zweck entwickelte Programm renice und zum anderen das Programm top, das wir schon bei der Prozessbeobachtung kennengelernt haben.

Beide Programme erlauben es, daß ein laufender Prozess seinen Nice-Wert verändert bekommt. Normaluser dürfen den Nice-Wert bei beiden Programmen nur vergrößern. Das heißt, das auch ein Normaluser, der selbst seinem eigenen Prozess einen Nicewert von beispielsweise 10 gegeben hat, diesen Wert nicht mehr auf 5 runtersetzen kann.

Das Programm renice ist im Gegensatz zu top auch in der Lage, alle Prozesse eines Users oder einer Gruppe gleichzeitig zu verändern. top kann dagegen nur einzelnen PIDs einen neuen Nice-Wert zuweisen.