Ich bin völlig ahnungslos über das Innenleben eines Betriebssystems, aber ich kann mehr oder weniger das ungefähre Verhalten vieler Funktionen erraten. Eine Sache, die ich nicht herausfinden kann, ist Multitasking.
Theoretisch verwaltet das Betriebssystem die Zeit, je nach CPU für kleine Intervalle, bis zu den verschiedenen Programmen, die ausgeführt werden. Aber es ist nicht klar, wie das wirklich funktioniert.
Angenommen, das Betriebssystem möchte mein Programm starten. Der Maschinencode wird irgendwo im RAM ab einer bestimmten Adresse geladen. Ich denke, dann sollte ein Sprung zu dieser Adresse ausgeführt werden, damit mein Code ausgeführt werden kann. Aber auf diese Weise kann das Betriebssystem die Kontrolle nicht wiedererlangen, bis ich zurückspringe.
Grundsätzlich kann ich mir nur zwei Möglichkeiten vorstellen, um diese Arbeit zu machen, aber keine scheint wirklich geeignet zu sein:
Das Betriebssystem könnte die Maschinenanweisungen lesen, die ich ausführen möchte, und sie emulieren, anstatt sie direkt auszuführen. Ich bin absichtlich vage, da ich nicht weiß, wie das funktionieren würde, aber es scheint, als würde es das Programm erheblich verlangsamen.
Alternativ könnte das Betriebssystem warten, bis ich einen Systemaufruf tätige. In diesem Moment erlangt es wieder die Kontrolle und kann überprüfen, wie lange ich schon gelaufen bin und seine Timesharing-Aufgaben erledigen. Dies mag funktionieren, scheint aber unzuverlässig zu sein, da ich eine lange Berechnung durchführen könnte, bei der keine Systemaufrufe erforderlich sind und nicht alles für eine Weile hängen bleibt.
Es scheint also, dass keiner der Mechanismen sehr gut funktionieren würde. Wie wird eigentlich Multitasking durchgeführt?
interrupt
INT
Anweisung ausführen . Mir ist noch etwas rätselhaft