Fair-Share-Scheduling
Fair-Share-Scheduling ist ein Scheduling-Verfahren für Betriebssysteme, in denen die CPU-Nutzung gleichmäßig zwischen den System-Benutzern oder Gruppen verteilt wird, im Gegensatz zur gleichen Verteilung zwischen Prozessen.
Wenn beispielsweise vier Benutzer (A,B,C,D) gleichzeitig jeweils einen Prozess ausführen, teilt der Prozess-Scheduler die verfügbaren CPU-Zyklen so, dass jeder Benutzer 25 % aller Zyklen bekommt (100 % / 4 = 25 %). Wenn der Benutzer B einen zweiten Prozess startet, wird jeder Benutzer immer noch 25 % aller Zyklen bekommen, aber jeder Prozess von B wird nun nur noch 12,5 % benutzen. Wenn allerdings ein neuer Benutzer einen Prozess im System startet, wird der Scheduler die verfügbaren CPU-Zyklen neu aufteilen, so dass jeder Benutzer 20 % aller Zyklen bekommt (100 % / 5 = 20 %).
Eine weitere Abstraktionsebene ermöglicht es, Benutzer in Gruppen einzuteilen und den Fair-Share-Algorithmus auch auf Gruppen anzuwenden. In diesem Fall werden die verfügbaren CPU-Zyklen erst durch die Anzahl der Gruppen, dann durch die Anzahl der Benutzer innerhalb der Gruppe und dann durch die Anzahl der Prozesse pro Benutzer geteilt. Gibt es beispielsweise drei Gruppen (1,2,3), die jeweils drei, zwei und vier Benutzer umfassen, werden die verfügbaren CPU-Zyklen wie folgt aufgeteilt:
- 100 % / 3 Gruppen = 33,3 % pro Gruppe
- Gruppe 1: (33,3 % / 3 Benutzer) = 11,1 % pro Benutzer
- Gruppe 2: (33,3 % / 2 Benutzer) = 16,7 % pro Benutzer
- Gruppe 3: (33,3 % / 4 Benutzer) = 8,3 % pro Benutzer
Eine übliche Methode der logischen Implementierung des Fair-Share-Scheduling-Verfahrens ist, das Round-Robin-Scheduling-Verfahren auf jeder Abstraktionsebene (Prozesse, Benutzer, Gruppen usw.) rekursiv anzuwenden. Das Zeit-Quantum, welches der Round-Robin benötigt, ist hier unwichtig, da jede gleiche Aufteilung der Zeit dieselben Ergebnisse liefern würde.