Prozessmanagement

Aus Xinux Wiki
Version vom 28. November 2025, 07:49 Uhr von Thomas.will (Diskussion | Beiträge) (→‎Prozessmanagement)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
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.