In Multitaskingsystemen werden durch den sogenannten Scheduler
in einem bestimmten Takt die lauffähigen Prozesse
auf dem Prozessor gewechselt. Ein Prozeßwechsel kann dabei nur zu den
Schedulezeitpunkten stattfinden. Innerhalb eines Zeitabschnitts
werden keine Prozeßwechsel durchgeführt.
Die einzige Ausnahme von dieser Regel ist, wenn ein Prozeß freiwillig Rechenzeit abgibt, sich also schlafen legt. Dies wird immer dann durchgeführt wenn der Prozeß nicht mehr weiterarbeiten kann, weil z.B. benötigte Daten noch nicht vorliegen. Aufgeweckt wird ein schlafender Prozeß dann durch das Eintreffen eines beim Schlafenlegen angegebenen Ereignisses. Ereignisse bedeuten normalerweise das Eintreffen von Daten, z.B. von der Platte, dem Netz, externen Geräten oder auch durch Benutzeraktivität, die der Prozeß zum Weiterarbeiten benötigt. Diese Ereignisse lösen einen Interrupt aus, der den Scheduler zum Wecken des Prozesses veranlaßt. Zu den lauffähigen Prozessen zählen alle Prozesse, die im Moment rechnen könnten, also nicht auf bestimmte Ereignisse warten.
Der Scheduler teilt die Rechenzeit
möglichst gleichmäßig auf die einzelnen Prozesse auf, d.h. wenn
fortwährend zwei Prozesse lauffähig sind, kommt jeder ungefähr
jeden zweiten Scheduletakt zum Rechnen. Auf
Multiuser-/Multitaskingsystemen werden normalerweise zwischendurch auch
andere Prozesse lauffähig, meist durch das Eintreffen oben beschriebener
Ereignisse, wodurch sie dann aufgeweckt werden. Daher kann im allgemeinen
nicht vorausgesagt werden, wann ein bestimmter Prozeß Rechenzeit bekommt
und wie lange er rechnen kann. Dies führt bei Echtzeitanwendungen zu
großen Problemen, da nicht sichergestellt werden kann, daß ein
Echtzeitprozeß wirklich dann seine Rechenzeit bekommt, wenn er sie
benötigt. Durch die später beschriebenen Modifikationen des normalen
Schedulers muß diese Echtzeitfähigkeit erreicht werden. Zuerst wird aber
die prinzipielle Funktionsweise der Hardware Steuerung dargelegt.