Scheduling im Kernel 2.4

Zusammenfassung

Der Scheduler im Linux Kernel 2.4 lief sehr lange und sehr stabil in den unterschiedlichsten Aufgabenbereichen und ist ein relativ simpler Algorithmus, der entsprechend robust ist.
Der Hauptunterschied zum Scheduler im Kernel 2.6 liegt in der Verwaltung der Runqueue. Hier gibt es Systemweit nur eine solche Runqueue mit einer verketteten Liste, die alle wartenden Prozesse enthält. Zeitkontingente werden vom Scheduler für alle Prozesse zur gleichen Zeit berechnet, was abhängig von der Anzahl der Prozesse ist. Dadurch ist die Laufzeitkomplexität von schedule() O(n)
Erst wenn alle Prozesse ihre Zeitkontingente verbraucht haben, werden neue berechnet und es beginnt eine neue Epoche.
Zeitkontingente sind per default 200ms lang, also die hälfte des 2.6er Schedulers.
Prozesse die ihre Zeit nicht rechnend verbraucht haben, bekommen auch Boni in der nächsten Epoche. Sanktionen für CPU-Fresser gibt es jedoch keine.
Der nachfolgende Prozess wird berechnet, indem für jeden Prozess in der Runqueue eine goodness() Funktion ausgeführt wird und derjenige Prozess mit dem höchsten Rückgabewert kommt zur Ausführung. Auch diese Berechnung ist O(n) komplex.