Multitasking (auch Mehrprozessbetrieb) ist die Fähigkeit eines Betriebssystems, mehrere Aufgaben scheinbar gleichzeitig auszuführen. Der Begriff bezeichnet sowohl die Technik dahinter als auch die Fähigkeit eines Systems, viele Programme parallel offen zu halten.

Kooperativ oder präemptiv

Beim kooperativen Multitasking müssen die Programme die CPU freiwillig abgeben — etwa bei einer Wartezeit oder über einen Aufruf an das Betriebssystem. Hängt ein Programm, bleibt das ganze System stehen. Diese Technik nutzten frühere Systeme wie Windows 3.x oder das klassische Mac OS.

Beim präemptiven Multitasking behält der Scheduler die Kontrolle: Er unterbricht jeden Prozess nach einer Zeitscheibe und gibt die CPU an den nächsten weiter (siehe Prozess-Scheduling). Ein einzelnes Programm kann die Maschine nicht mehr dauerhaft blockieren — die Grundlage aller modernen Betriebssysteme wie Linux, Windows und macOS.

Time-Slicing: Die Illusion der Parallelität

Auf einem einzelnen Kern laufen die Prozesse nicht wirklich gleichzeitig, sondern quasi-parallel: Der Scheduler weist jedem Prozess kurze Zeitscheiben (typisch einige zehn Millisekunden) zu und wechselt so schnell zwischen ihnen, dass für den Menschen der Eindruck entsteht, alles laufe parallel. Den Wechsel zwischen den Scheiben übernimmt der Kontextwechsel. Man spricht dabei auch von Time-Sharing.

Echte Parallelität mit mehreren Kernen

Mit Multikern-Prozessoren und Hyper-Threading können mehrere Prozesse tatsächlich gleichzeitig rechnen — ein Kern pro Aufgabe. Das Betriebssystem verteilt die Prozesse dann auf die verfügbaren Kerne und kombiniert echte Parallelität mit Time-Slicing, wenn mehr rechenbereite Prozesse als Kerne vorhanden sind. Zusammen mit Threads als leichtgewichtigen Ausführungseinheiten entsteht so das moderne Nebenläufigkeits-Modell.

Verwandte Grundlagen: Prozess-Scheduling, Kontextwechsel, Thread, Nebenläufigkeit, Multikern-Prozessor.