Nein, das Programm übernimmt nicht die vollständige Kontrolle über die CPU. Wenn dies der Fall wäre, gibt es andere Dinge, die aufhören zu funktionieren, wie Tastatur, Maus, Festplatten usw.
An die CPU sind Interrupt-Leitungen angeschlossen, die anzeigen, wenn Informationen von einem Gerät eingehen. Ein Tastendruck verursacht beispielsweise ein Interrupt-Signal, das die aktuelle Ausführung anhält und einen Interrupt-Handler startet.
Es gibt auch einen internen Timer, der als Gerät angeschlossen ist, sodass das Betriebssystem den Timer so einstellen kann, dass Interrupt-Signale mit einer bestimmten Geschwindigkeit erzeugt werden. Auf diese Weise kann das Betriebssystem die Kontrolle in bestimmten Abständen immer vom laufenden Prozess zurückholen.
Bei der Verarbeitung eines Interrupts ist es üblich, dass nach Ablauf des Interrupthandlers die Steuerung zum laufenden Programm zurückkehrt. Der Prozessplaner kann jedoch den Status eines Prozesses speichern, einen anderen Prozess wiederherstellen und den Interrupthandler stattdessen zu diesem Prozess zurückkehren lassen.
Der Scheduler hat auch andere Möglichkeiten, zwischen Prozessen zu wechseln. Wenn das Programm beispielsweise einen Systemaufruf ausführt, um Platten-E / A auszuführen, lässt der Scheduler die E / A-Anforderung an die Hardware weiterleiten und speichert den Prozess im Wartezustand. Wenn die Festplatte bereit ist, Daten zurückzugeben, sendet sie einen Interrupt, sodass der Scheduler zu dem Prozess zurückkehren kann, der auf die Daten wartet.
(Ich habe einmal ein Programm geschrieben, das tatsächlich die vollständige Kontrolle über den Computer übernommen hat und alle Interrupts deaktiviert hat. Ich musste meine eigenen Handler für die Eingabe von Tastatur und Maus schreiben, und Festplatten-E / A funktionieren in diesem Zustand überhaupt nicht.)