Wie OS laufende Programme verwaltet

1291
fixer1234

Da Windows ein Multitasking-Betriebssystem ist, muss es irgendwie zwischen Prozessen wechseln. Aber wie wird es gemacht? Enthält Windows eine Art Haltepunkte in laufenden Programmen, die zu einem anderen Prozess wechseln sollten? Da das Programm ausgeführt wird, übernimmt es die Kontrolle über die CPU. Um Multitasking zu aktivieren, muss das Betriebssystem einige Unterbrechungsanweisungen enthalten. Habe ich recht?

2

3 Antworten auf die Frage

3
Guffa

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.)

1
Amber

Betriebssysteme (und Threading im Allgemeinen) werden von einem Scheduler gesteuert, der die CPU-Zeit nach Bedarf verschiedenen Threads (und Prozessen) zuordnet. Der Scheduler kann die CPU von einem Prozess wegziehen, wo immer er dies für angebracht hält.

1
Andrew McGregor

Nein, dies geschieht durch die Verwendung von Hardwarefunktionen, um die Kontrolle über einen Timer oder ein anderes Ereignis wieder in den Kernel zu bringen.

Sie beschreiben das "kooperative Multitasking", bei dem Anwendungen geschrieben werden, die dem Betriebssystem in regelmäßigen Abständen die Kontrolle zurückgeben. Ein Element davon ist zwar vorhanden, wenn Anwendungen auf Benutzereingaben warten, die Netzwerk- oder Festplattenoperationen abschließen, ein Betriebssystem wie Windows kann auch zwei Anwendungen ausführen, die nicht gleichzeitig auf etwas warten.

Die Hardware verfügt über Interrupts, über die ein bestimmtes Code-Bit im Kernel gesteuert wird, das während des Startvorgangs eingerichtet wurde. Der Kernel entscheidet dann, was er als Nächstes steuern soll. Dies ist die Aufgabe des Schedulers.