WikiDer > Sicherheitsmodus
Sicherheitsmodus oder Sicherheitsmodus, die seit dem 80286, ist ein Zustand eines Prozessors der x86-Architektur. Im geschützten Modus gibt es vier Ringe, von denen der niedrigste die meisten Privilegien hat, während andere Ringe entzogen werden können, sodass sie bestimmte Anweisungen oder so bestimmte nicht ausführen können IOPorts können nicht verwendet werden. Es ist auch möglich, den geschützten Modus zu verwenden Multitasking, etwas, was bisher auf der nicht möglich war x86-die Architektur.
Ein x86-Prozessor bootet immer in echte Mode oder Realmodus. Dies ist für die Kompatibilität mit dem Original notwendig 8086, für die MS-DOS ist geschrieben. Intel wollte sicherstellen, dass MS-DOS noch auf einem neueren Intel-Prozessor lauffähig ist. Außerdem kann im Real-Modus nur das erste Megabyte verwendet werden und während der Bereich danach erreichbar ist, überlappt dieser Bereich mit dem Anfang des ersten Megabytes. Um in den geschützten Modus zu gelangen, müssen Sie einige Dinge initialisieren: de zwanzigste Adresszeile, das globale Beschreibungstabelle und der geschützte Modus selbst.
Obwohl der geschützte Modus sehr interessant war, wurde er nicht sofort verwendet. Das lag vor allem daran, dass der 80286 einen Konstruktionsfehler hatte, bei dem man nicht in den Real-Modus zurückkehren konnte, was damals eigentlich sehr interessant war, da man dann den Real-Modus auf vier Gigabyte einstellen konnte des Speichers und verwenden es immer noch BIOS noch verwenden können. Das BIOS hat im geschützten Modus nicht funktioniert.
Eine umständliche Möglichkeit, dieses Problem zu umgehen, funktionierte mit ALLE LADEN.
Segmentdeskriptoren
Ein Prozessor verfügt neben den bekannten 16-Bit Segmentregister ebenfalls Segmentdeskriptoren. Die Deskriptoren sind für ein Programm nicht zugänglich. Das Betriebssystem erstellt jedoch eine Tabelle, die die Werte enthält, die in den Segmentdeskriptoren angezeigt werden. Jedes Mal, wenn ein Segmentregister geladen wird, sucht der Prozessor die entsprechenden Segmentdeskriptordaten. Aus diesem Grund dauert das Laden eines Segmentregisters eine ganze Weile - viel länger als im realen Modus.
Die Segmentdeskriptoren enthalten hauptsächlich die Basisadresse, an der die Adressierung beginnt. Diese Adresse hat so viele Bits, wie Adressleitungen vorhanden sind, sodass der gesamte Speicher adressierbar ist, während man im Real-Mode (mit 16-Bit-Segmentregistern) nicht viel weiter als 1 MiB kommt.
Darüber hinaus enthalten die Segmentdeskriptoren Daten für virtueller Speicher und Sicherheitsinformationen.
Aufrufen und Verlassen des geschützten Modus
Es ist beim 80286 nicht möglich, vom geschützten Modus in den echte Mode. Dies stellte sich unter DOS als Problem heraus, da DOS im Real-Modus arbeitet. Sie mussten in den geschützten Modus wechseln, um den Speicher über 1 MB zu adressieren oder andere Aufgaben auszuführen, und wollten dann wieder in den echten Modus zurückkehren. Um letzteres zu ermöglichen, wurde ein Hardware-Reset generiert.
Um in den geschützten Modus zu gelangen, müssen Sie zuerst Globale Deskriptortabelle (GDT) kann mit mindestens drei Einträgen erstellt werden: einem Nulldeskriptor, einem Codesegmentdeskriptor und einem Datensegmentdeskriptor. Außerdem muss die 20. Adresszeile (A20) eingeschaltet sein, damit alle Adresszeilen verwendet werden können, damit die Zentralprozessor kann Speicher über 1 Megabyte verwenden. Nach Durchführung dieser Schritte kann das PE-Bit im CR0-Register eingeschaltet werden und ein Weitsprung muss ausgeführt werden, um die Befehlswarteliste zu löschen.
lgdt [GDT] ; Laden Sie die globale Deskriptortabelle. eax bewegen, cr0 ; oder eax, (1 << 0); PE-Bit ist Bit 0 von CR0 mov cr0, eax ; jmp 0x08:.SetCS ; Setzen Sie das Codesegment gleich dem zweiten Eintrag in der GDT und springen Sie zu .SetCS.SetCS: mov ax, 0x10 ; Alle Segmentdeskriptoren werden dem dritten Eintrag in der GDT gleich. mov ds, ax ; bewegt, Axt; mov fs, ax ; mov gs, ax ;
Wenn der 80386 freigegeben wurde, wurde es möglich, durch Laden der Segmentregister mit den Werten für den Realmodus, ggf. Bei modernen Betriebssystemen ist dies jedoch nicht mehr notwendig.
| Arbeitsmodi von i86 |
|---|