Multitasking
Multitasking ist die Fähigkeit eines Betriebssystems oder einer anderen Software, mehrere Aufgaben scheinbar gleichzeitig auszuführen. Dabei werden die verschiedenen Prozesse in so kurzen Abständen immer abwechselnd aktiviert, dass der Eindruck der Gleichzeitigkeit entsteht. Bei Echtzeit-Systemen ist das Multitasking besonders auf die geforderten Reaktionszeiten hin optimiert.
Hierbei gibt es verschiedene Konzepte zur Handhabung des Multitasking.
Die heutzutage am häufigsten angewendete Methode ist das präemptive Multitasking, bei dem der Betriebssystemkern die Abarbeitung der einzelnen Prozesse steuert (s. u.) und jeden Prozess nach einer bestimmten Abarbeitungszeit zu Gunsten anderer Prozesse anhält. Eine beliebte Umsetzung des präemptiven Multitaskings ist die Verwendung einer Vorrangwarteschlange in Verbindung mit der Round-Robin-Scheduling-Strategie. Dabei spricht man auch von sog. "Zeitscheiben", d. h. jedem Prozess wird (absolut oder pro definierter Zeiteinheit) abhängig von dessen Rechenaufwand ein bestimmter Prozentteil dieser Zeit zugewiesen.
Eine alternative Form des Multitasking ist das von älteren Windows-Versionen und MacOS bis Version 9 bekannte "kooperative Multitasking". Dabei ist es jedem Prozess selbst überlassen, wann er die Kontrolle an den Kern zurückgibt. Es hat den Nachteil, dass Programme, die nicht kooperieren, bzw. die Fehler enthalten, das gesamte System zum Stillstand bringen können.
Hardwareseitig wird Multitasking durch einen außerhalb der CPU angesiedelten Zeitgeber realisiert, der regelmäßig ein Signal (Interrupt) an die CPU schickt, was sie zur Ausführung des Schedulers veranlasst, der die Prozesse unterbricht, die nötige Verwaltungsaufgaben (evtl. Swapping) übernimmt und wieder fortsetzt. Außerdem muss die CPU dazu in der Lage sein, den Hauptspeicher zu virtualisieren und verschiedene Berechtigungslevel (Ringe) für Prozesse zu unterscheiden, die sie in den erlaubten CPU-Befehlen einschränken, damit sich die Prozesse nicht gegenseitig beeinflussen können. Bei den x86-kompatiblen Prozessoren sind diese Funktionen teilweise bereits ab dem 80286 verfügbar - vollständig aber erst seit dem 80386.