Zum Inhalt springen

„Completely Fair Scheduler“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
[gesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
K Siehe auch: Fair-Share-Scheduling
TomasPospisek (Diskussion | Beiträge)
Die Angaben im Artikel sind nicht korrekt - siehe englische Seite und Diskussions-Seite.
Zeile 1: Zeile 1:
{{überarbeiten}}

Der '''Completely Fair Scheduler''' ('''CFS''') ist ein [[Prozess-Scheduler]] <!-- passt hier aber auch nicht so schön: -->in der Informatik. Solche ''Scheduler'' werden verwendet, um die Priorität von Programmabläufen auf [[Kernel (Betriebssystem)|Kernelebene]] von [[Betriebssystem]]en zu verwalten. CFS wurde von [[Ingo Molnár]] entwickelt und ersetzte mit der [[Linux (Kernel)|Linux-Kernelversion]] 2.6.23 im Oktober 2007 seinen zuvor implementierten [[O(1)-Scheduler]].
Der '''Completely Fair Scheduler''' ('''CFS''') ist ein [[Prozess-Scheduler]] <!-- passt hier aber auch nicht so schön: -->in der Informatik. Solche ''Scheduler'' werden verwendet, um die Priorität von Programmabläufen auf [[Kernel (Betriebssystem)|Kernelebene]] von [[Betriebssystem]]en zu verwalten. CFS wurde von [[Ingo Molnár]] entwickelt und ersetzte mit der [[Linux (Kernel)|Linux-Kernelversion]] 2.6.23 im Oktober 2007 seinen zuvor implementierten [[O(1)-Scheduler]].



Version vom 21. Februar 2016, 23:13 Uhr

Der Completely Fair Scheduler (CFS) ist ein Prozess-Scheduler in der Informatik. Solche Scheduler werden verwendet, um die Priorität von Programmabläufen auf Kernelebene von Betriebssystemen zu verwalten. CFS wurde von Ingo Molnár entwickelt und ersetzte mit der Linux-Kernelversion 2.6.23 im Oktober 2007 seinen zuvor implementierten O(1)-Scheduler.

Der CFS garantiert eine faire Aufteilung der Prozessorzeit. Er verzichtet im Gegensatz zum O(1)-Scheduler auf Heuristiken und Statistiken. Im Idealfall läuft beim CFS jeder Prozess quasiparallel in gleicher Geschwindigkeit. Der CFS kennt keine Runqueue, keine Timeslices und kein Array-Switching, weil es kein expired-Array gibt. Stattdessen ist jedem Prozess ein wait_runtime-Wert zugeordnet, der auf Nanosekunden genau bestimmt ist und eine Aussage darüber macht, wie lange der Prozess auf seine Ausführung wartet. Derjenige Prozess mit höchster wait_runtime wird gewählt. Als Struktur wird dafür ein nach der wait_runtime sortierter Rot-Schwarz-Baum verwendet.[1]

Erweiterungen im 2.6.24er-Kernel

Mit dem 2.6.24er-Kernel unterstützt der CFS Task Groups. Dies bedeutet, dass mehrere Prozesse zu Gruppen zusammengefasst werden und dadurch eine faire Aufteilung zwischen den Gruppen stattfindet. Das kann sinnvoll sein, wenn mehrere User an einem System arbeiten.

Folgendes Szenario verdeutlicht den Sachverhalt: Benutzer A lässt zwei Prozesse laufen, Benutzer B dagegen einen. Alle drei Prozesse haben die gleiche Priorität. Der alte O(1)-Scheduler würde dem Benutzer A zwei Drittel und Benutzer B ein Drittel der CPU-Laufzeit zuteilen. Der CFS teilt dagegen beiden Usern 50 % der Rechenzeit zu.[1]

Siehe auch

Einzelnachweise

  1. a b Ingo Molnár: This is the CFS scheduler., Stand 13. März 2008