Rechenzeit und Priorität
Da auch bei Prozessen eine Gerechtigkeit herschen muss, muss eine Instanz darüber entscheiden wie lange ein Prozess Rechenzeit verbrauchen darf. Folgende Kenndaten werden dazu benötigt
- clocktick = Zeiteinheit
- n = Faktor über den Kernel einstellbar
- slice = n * clocktick
- agingtime = weitere Zeiteinheit über den Kernel einstellbar
Es wird davon ausgegangen das der Prozess mit der niedrigsten Priorität gerade rechnet. Pro clocktick erhöht sich die Priorität dieses Prozesses um eins.
Jetzt können 3 Situationen eintreten die alle dazu führen das der Scheduler aufgerufen wird.
- Prozess blockiert wegen einer Ausgabe oder Eingabe.
- Gibt Rechenzeit freiwillig ab.
- Der Slice endet.
Der Aufruf des Schedulers bewirkt das der Prozess mit der niedrigsten Priorität gescheduled wird, er also nun rechnen darf. Nach Ablauf der agingtime werden nun die Prozesse "gealtert". Das geschieht nach folgender Formel
Neue Priorität = Alte Priorität / 2 + Nicewert
Der User hat die Möglichkeit, über den sogenannten Nicewert den Grundwert für einen Prozess zu senken. Der Prozess braucht dann länger für seine Abarbeitung. Er verhält sich somit netter zu den anderen Prozessen. Normale User können nur netter werden, der Systemverwalter kann auch nicht netter (gemeiner) werden. Der Bereich liegt zwischen 19 (sehr nett) bis 0 (weniger nett) für die User, und 19 bis -20 für root.