Ich entwickle einen einfachen Kernel für mein kommendes Betriebssystem. Ich habe alles bis zum Scheduler entwickelt. Ich frage mich, wie der Scheduler in seinen Zyklus kommt.Wie kehrt der OS-Scheduler zurück?
Zum Beispiel
- der Timer-Interrupt ausgelöst.
- Der Handler ruft den Scheduler auf.
- Der Scheduler springt den nächsten Prozess in der Warteschlange.
- Der Interrupt muss zurückkehren (IRETD)
Aber wenn der Scheduler muss den nächsten Prozess dann springen, wenn die Interrupt-Rückkehr tut. Und wenn es so wäre, würde es nicht zum letzten Prozess zurückkehren.
Ich möchte diese Klarstellung - Wie kommt der Timer-Interrupt zurück zum Scheduler und wie kommuniziert der Scheduler mit Timer-Interrupt (wenn mit Funktionsaufruf, wann kommt er zurück)?
Angenommen - Monolithic Kernel
Ich hebt geschoben Ich bin nicht vertraut mit den Besonderheiten der IRETD-Anweisungen, aber ich nehme an, es muss den Befehlszeiger und andere Register von einem Stapel aufspringen, um fortzufahren. Die Art, wie ich es sehe, müssen Sie die Werte in diesem Stapel ändern, so dass, wenn IRETD erscheint, was es braucht, es den neuen Prozess statt des unterbrochenen Prozesses effektiv wieder aufnimmt. Ich kann Ihnen keine Details geben, ohne diesen Teil der x86-Anweisung selbst zu studieren. Meine Erfahrung kommt hauptsächlich von meinem Hobbyprojekt (https://bitbucket.org/ruifig/g4devkit), das lose auf ARM basiert. – RuiFig