Prozessmanagement
Zur Navigation springen
Zur Suche springen
Prozessmanagement
- Das Prozessmanagement des Kernels sorgt dafür, dass alle Prozesse fair CPU-Zeit erhalten.
- Der Kernel steuert die Planung durch den Scheduler, der entscheidet, welcher Prozess wann rechnen darf.
- Wichtige Parameter:
- clocktick: Basiseinheit der Zeitscheiben
- n: vom Kernel einstellbarer Faktor
- slice: n * clocktick
- agingtime: Zeiteinheit für Prioritätserhöhung von Prozessen
- Prozesse werden nach Priorität (Nicewert) geplant.
- Die Priorität wird nach folgender Formel angepasst:
Neue Priorität = Alte Priorität / 2 + Nicewert
- Der Nicewert beeinflusst, wie „nett“ ein Prozess gegenüber anderen ist:
- Benutzer: 0 (Standard) bis 19 (netter)
- Root: -20 (unfreundlich) bis 19 (nett)
- Der Scheduler wird aufgerufen, wenn:
- Ein Prozess auf Eingabe/Ausgabe blockiert
- Ein Prozess freiwillig Rechenzeit abgibt
- Die Zeitscheibe (slice) abläuft
Beispiel mit Kommandos
- Starte einen Prozess mit erhöhter Nettigkeit:
#!/bin/bash
nice -n 10 ./mein_skript.sh
- Ändere den Nice-Wert eines laufenden Prozesses:
#!/bin/bash
renice -n 5 -p 1234
- Prüfe die Priorität und CPU-Zeit der Prozesse mit top:
#!/bin/bash
top
- Prüfe PID, Nicewert und Kommando aller Prozesse:
#!/bin/bash
ps -eo pid,ni,cmd
Hinweise
- Jeder Prozess läuft in einem Subprozess (Kindprozess) der Shell.
- Der Exit-Status eines Kommandos kann mit echo $? überprüft werden.
- Hintergrundprozesse werden mit '&' gestartet und laufen parallel.
- Der Scheduler sorgt für Gerechtigkeit: Prozesse mit niedriger Priorität „altern“ nach Agingtime.
Aufgaben
- Starte ein Skript mit Nicewert 10 und prüfe die CPU-Zeit mit top.
- Ändere den Nicewert eines laufenden Prozesses und beobachte die Änderung.
- Erstelle einen Hintergrundprozess mit '&' und überwache ihn mit ps.
- Starte mehrere Prozesse mit unterschiedlichen Nicewerten und beobachte, wie der Scheduler die CPU-Zeit verteilt.