Während eines x86-Software-Interrupts wird wann genau ein Kontextwechsel durchgeführt?

Ich frage dies, weil ich versuche, Interrupts in meinem Spielzeugkernel zu implementieren. Ich weiß also, dass die CPU beim Auftreten eines Interrupts verschiedene Informationsbits auf den Stapel schiebt. Überall, wo ich online suche, werden unterschiedliche Informationen in unterschiedlicher Reihenfolge angezeigt. Ich weiß auch, dass, wenn der Interrupt im Benutzermodus (Ring 3) aufgetreten ist, die CPU in den Kernelmodus (Ring 0) wechseln muss, bevor sie den ISR ausführen kann. Ich denke, es hat etwas mit dem @ zu tTSS undss undesp, aber ich bin mir nicht sicher. Ich habe im Internet verschiedene Erklärungen gelesen und noch keine einheitliche gefunden.

Someine Frage ist in wasgena order schiebt die (x86) -CPU während eines Interrupts Daten auf den Stack und wann und zu welchem Zeitpunkt führt sie einen Kontextwechsel über das @ durTSS und wie wirkt sich das auf die Daten aus, die auf den Stack gepusht werden, wenn überhaupt?

Was ich bisher aus der Forschung gelernt habe (korrigiere mich, wenn ich falsch liege): Ich bin mir ziemlich sicher, dass der Prozessor @ drüceflags, cs undeip auf den Stapel sowie einerror code ggf. während eines Interrupts. Ist dies jedoch alles, was geschoben wird? Ich habe an anderer Stelle gelesen, dassss undesp werden gepusht, aber ich weiß nicht, ob dies die ganze Zeit passiert, oderWaru es wird gedrückt.

Außerdem glaube ich, dass die CPU im @ aussehen wiTSS für den Ring0ss undesp undn einem gewissen Punlad sie, aber ich bin mir nicht sicher wann. Vielleicht macht es das gleich nach dem Auftreten des Interrupts? Auch wie istcs undds während all dem gehandhabt? Istcs wird von der CPU aus dem Eintrag im @ geladIDT? Wie wäre es mitds? Muss ich das manuell laden?

Tut mir leid, wenn dies der falsche Ort ist, um zu fragen, ich bin nicht sicher, wo ich sonst sollte.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage