BIOS-Interrupts, Privilegien und Paging

847
Peter Mortensen

Ich lernte etwas über Intel 8086-80486-CPUs und ihre Interaktionen mit Hardware. Aber ich verstehe es immer noch nicht so gut. Bitte hilf mir, leere Stellen auszufüllen.

Zunächst weiß ich, dass die CPU über BIOS-Interrupts mit der Hardware kommuniziert. Aber was passiert wirklich im PC, wenn ich eine INT-Anweisung anrufe? Ich weiß, dass gemäß der Interrupt-Tabelle einige Anweisungen ausgeführt werden, aber wie kann das BIOS durch Ausführen einiger Anweisungen erkennen, was ich tun möchte? Da die CPU meines Wissens keinen zusätzlichen Kommunikationskanal mit dem BIOS hat, kann sie nur Speicher adressieren und Daten empfangen. Wie kann ich also das BIOS anweisen, etwas zu tun, wenn ich nur RAM ansprechen kann?

Das nächste, was ich nicht verstehe, betrifft Privilegien. Ich kenne das Ringmodell und die Zugriffsrechte, aber woher weiß die CPU, auf welcher Berechtigungsstufe eine Anweisung ausgeführt wurde? Ich denke, dass diese Privilegien nur dann gelten, wenn Intruction versucht, Speicher anzusprechen, aber wie erhält eine Anwendung ihre Privilegstufe? Ich meine, ich kenne die Stufe 3, aber wie wird es eingestellt?

Und als letztes weiß ich, dass Paging ein Adressschema ist, das zur Unterstützung von anwendungstransparentem virtuellem Speicher oder für das Auslagern verwendet wird. Ich konnte jedoch keine Informationen darüber finden, wie Paging mit dem geschützten Modus verknüpft ist. Zum Beispiel, wenn Paging wie der nächste Modus unabhängig vom geschützten Modus ist oder irgendwie im geschützten Modus implementiert ist. Und wenn es im geschützten Modus implementiert ist, ist es nicht zu langsam, um zuerst den Anwendungsbereich zu adressieren, dann den Offset und dann den Paging-Ordner, die Seite und den Offset erneut auszuführen?

0
@ Jack, Sie könnten bessere Ergebnisse erzielen, wenn Sie Ihre Frage in ein paar kurze und spezifische Fragen und nicht in eine große Frage unterteilen können. heavyd vor 14 Jahren 0
Ok, ich werde es tun, danke. vor 14 Jahren 0

1 Antwort auf die Frage

2
Tomas Lachman

Es gibt zwei Modi: real und geschützt. Im Realmodus können Sie nur 1 MB Speicher ansprechen. Auf BIOS-Interrupts kann nur im Real-Modus zugegriffen werden. Adressen A0000 - FFFFF werden zugeordnet: A0000 - BFFFF ist Videospeicher, F0000 - FFFFF ist ROM BIOS, wo sich der Code der BIOS-Interrupt-Service-Routinen befindet. Im Real-Modus gibt es keine Berechtigungsstufen. Wenn Sie die Anweisung "int n" ausführen, geschieht dies: Flags, cs, ip werden auf dem Stack gespeichert. Word bei n * 4 + 2 wird in cs geladen und Word bei n * 4 wird in IP geladen.

Der geschützte Modus wird durch Setzen des Bits 0 des Registers cr0 gestartet. Dann haben Sie die 4 Privilegien. Bevor Sie es jedoch starten, müssen Sie A20 aktivieren, Interrupt-Basen für IRQ 0-7 und IRQ 8-15 einstellen und IDT, GDT erstellen.

Das Paging wird durch Setzen des Bits 31 von cr0 gestartet. Vor dem Starten müssen Sie ein Seitenverzeichnis und Seitentabellen erstellen und cr3 so einstellen, dass es auf das Seitenverzeichnis verweist.