Position des Interrupt Handlers in einem Adressraum im RAM

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Position des Interrupt Handlers in einem Adressraum im RAM
Hey,

mir ist noch etwas nicht ganz klar. Im Folgesatz 3 auf Seite 23 wird ja dargestellt, wie ein Interrupt vor sich geht. Dazu ist auch ein Adressbereich des Prozesses (= virtueller Arbeitsspeicher) definiert. Ich wollte nur kurz fragen, ob der Interrupt-Handler immer im “Programmbereich”, welcher wohl dem TEXT-Segment im RAM entspricht (User-Space), liegen soll? Ich dachte ja immer, dass der Interrupt-Handler ist Teil der Betriebssystems ist und somit Teil des Kernel-Spaces wäre, welcher ja immer in den oberen 1GB eines Adressbereichs beheimatet ist. Ich verstehe die Zeichnung des Arbeitsspeichers nicht ganz. Könnt ihr mir da ein wenig auf die Sprünge helfen?

Vielen Dank!


Text-Segment gibt es mehr oder weniger nur im Kontext des Binärdateiformats (ELF, COFF/PE). Es gibt zwar auf Intel Architektur Segmente, die finden aber normal keine Verwendung mehr und sind im Long Mode (64-Bit) auch ausgeschaltet.
Linux und Windows verwenden ein Flat Memory Modell, d.h. es gibt bloß ein Segment das so groß ist wie der Adressraum (z.B. 4 GiB).
Dieser Adressraum wird pro Prozess aufgespannt und darin wird entweder unten oder oben der Kernel eingeblendet (lower/upper half kernel).
Der Kernel Bereich (Ring 0) ist vom Benutzerbereich (Ring 3) nicht direkt zugreifbar.

Zur Behandlung eines Interrupts wird auf Intel Architektur die Interrupt Descriptor Table herangezogen, welche vom Betriebssystem mit dem Befehl lidt gesetzt wird.
Die Interrupt Behandlung ist damit schon Teil des Betriebssystems, aber das Betriebssystem und die Anwendung teilen sich den Adressraum.


Siehe dazu auch
http://duartes.org/gustavo/blog/post/when-does-your-os-run/

Auf der Seite finden sich auch weitere hervorragende Erklärungen. Ein Stöbern lohnt sich allemal.