Präemptives Multitasking
Präemptiv wird in der Regel im Zusammenhang mit so genannten Multitasking-Verfahren verwendet. Es geht darum, auf welche Art und Weise das Betriebssystem eines Computers das Problem löst, dass mehrere Prozesse gleichzeitig ausgeführt werden. Sofern der Computer nur über eine CPU verfügt, kann zu einem bestimmten Zeitpunkt nur ein Prozess diese benutzen.Beim präemptiven Multitasking wird der Zeitraum in Scheiben definierter Länge unterteilt. Den einzelnen Prozessen werden durch den Scheduler Zeitscheiben zugewiesen. Läuft ihre Zeitscheibe ab, so werden sie unterbrochen und ein anderer Prozess erhält eine Zeitscheibe.
Das kooperative (nicht-präemptive) Multitasking arbeitet ohne Zeitscheiben. Hier blockiert ein Prozess die CPU solange bis er sie freiwillig abgibt.
Ältere Ansätze von Multitasking basierten u.a. auf der Nutzung des Timer-Interrupt-Systems. Dabei wurde beim Interrupt-Aufruf der entsprechende Prozesskontext gewechselt und eine neue Zeitscheibe zugeteilt. Der gravierende Nachteil bestand in der fehlenden Berechtigungs-Differenzierung von Nutzer- und Scheduler-Prozess: Der Nutzerprozess konnte jederzeit dem Scheduler verbieten, die Applikation zu unterbrechen.
Daher ist eine wesentliche Voraussetzung für echtes präemptives Multitasking eine CPU, die verschiedene Berechtigungs-Modi beherrscht und ein Betriebssystemkern, der in der Lage ist, die verschiedenen Modi dahingehend zu nutzen, Anwendungs-Software mit unterschiedlichen Berechtigungen auszuführen. Ein einfaches Beispiel:
- Anwendungssoftware ist „unterprivilegiert“ im Sinne von „sie darf nicht alles“. Sie muss nämlich von einem Prozess mit höher Berechtigungsstufe unterbrechbar sein. Das ist die Grundvoraussetzung dafür, dass der Kernel – wie oben beschrieben – ihr
- eine Zeitscheibe zuteilen und den Prozess aufrufen kann,
- bei Ablauf der Zeitscheibe den Prozess einfrieren und „schlafen“ legen kann und
- bei Zuteilung einer neuen Zeitscheibe den Prozess wieder so aufwecken kann, dass der Prozess nicht merkt, dass er unterbrochen wurde
- Der Systemkern selbst läuft in einem Modus mit maximaler Berechtigungsstufe.
- Bei Linux unterscheidet man hier zwischen Kernel-Mode und User-Mode,
- bei Windows NT und Nachfolgern spricht man von „Ring 0“ als Kernel-Modus und Ringen höherer Nummerierung für „unterprivilegierte“ Prozesse.
Prozessoren, die die o.g. Anforderungen erstmalig vollständig erfüllten, waren u.a. der 80386-Prozessor von Intel samt seiner kompatiblen Nachbauten und die 68030-CPU von Motorola aus der Reihe der 68k CPUs.