- Geschützter Modus
-
Der Begriff Schutzmodus, auch geschützter Modus oder englisch protected mode, bezeichnet einen speziellen Betriebsmodus der IA-32-Architektur (auch als x86-Architektur bekannt) von Intel, der seit dem 80286er Prozessor vorhanden ist. Dieser erlaubt einen Zugriff auf 16 MB Hauptspeicher (16-Bit Protected Mode). Mit dem 80386er wurde ein 32-Bit-Modus eingeführt, der den Zugriff auf bis zu 4 GB Hauptspeicher gestattet. Dieser Modus wird von allen modernen PC-Betriebssystemen (bei Microsoft seit Windows NT 3.1, bzw. für Consumer seit Windows 95) verwendet.
Inhaltsverzeichnis
Charakteristika
In diesem Betriebsmodus unterstützt die CPU sowohl Segmentierung (ab 286er) als auch Paging (ab 386er) sowie den namensgebenden Speicherschutz mit vier verschiedenen Schutzebenen auf Segmentebene und zwei Schutzebenen auf Page-Ebene. Die vier verschiedenen im x86-Schutzmodus existierenden und als Ringe bezeichneten Schutzebenen bzw. Befugnisstufen (engl. "privilege level") gewähren den darauf ablaufenden Codesegmenten unterschiedliche Rechte. Dies ermöglicht die Unterscheidung zwischen Kernel-Modus und Benutzer-Modus, welche in modernen Betriebssystemen umgesetzt ist. Dadurch wird verhindert, dass fehlerhafte oder böswillige Anwendungsprogramme das Betriebssystem überschreiben und somit verändern oder zum Absturz bringen können, oder Daten anderer Programme ausspähen können, was auf dem 8086er-Prozessor noch ohne Weiteres möglich war und nicht verhindert werden konnte.
16-Bit Protected Mode
Beim 286er wurde der so genannte „16-Bit Protected Mode“ eingeführt. In diesem Modus können maximal 16 MB physischer Hauptspeicher in 8192 Segmenten zu je maximal 64 KB angesprochen werden. Der Zugriff auf diese Segmente erfolgt über sogenannte Segmentdeskriptortabellen, welche vom Betriebssystem angelegt und verwaltet werden. Es ist möglich, mehr virtuelle Adressen anzusprechen, als physischer Arbeitsspeicher vorhanden ist. Über eine virtuelle Speicherverwaltung können einzelne Segmente beispielsweise auf Festplatte ausgelagert werden und anschließend in der Deskriptortabelle als „nicht vorhanden“ gekennzeichnet werden. Sobald ein Lese- oder Schreibzugriff auf so ein Segment erfolgt, löst der Prozessor eine „Segment not present“-Ausnahme aus, die vom Betriebssystem abgefangen wird, um das angeforderte Segment wieder zu laden und das Programm fortzusetzen.
Der 16-Bit-Protected-Mode wurde unter anderem von OS/2 und MS Windows (im sogenannten „Standardmodus“) verwendet.
32-Bit Protected Mode
Ab dem 386er wurde ein neuer 32-Bit Protected Mode eingeführt, in dem bis zu 4 GB physischer Hauptspeicher in 8192 Segmenten zu je maximal 4 GB angesprochen werden können. Hierfür sind die Deskriptortabellen erweitert worden, so dass bisher reservierte Bits für die Erweiterungen genutzt werden.
Außerdem gibt es ab dem 386er die Möglichkeit, Seitenverwaltung (Paging) zu aktivieren, welche der Segmentierung nachgeschaltet ist.
64-Bit-Modus
Mit der Einführung der AMD64-Architektur im K8-Prozessor von AMD, welche später auch von Intel unter dem Namen EMT64 (später IA 32e, jetzt Intel 64) übernommen wurde, wurde ein neuer Betriebsmodus bei x86-Prozessoren eingeführt, der sich von dem bisherigen Protected Mode grundlegend unterscheidet. Zwar existieren die vom 386er bekannten Segmente zwar weiterhin, allerdings mit deutlich beschnittener Funktionalität: Bei Code- und Datensegmenten ist die Segmentbasisadresse stets 0, eine Überprüfung des Segmentlimits findet nur noch bei bestimmten Systemsegmenten statt. Somit findet effektiv keine Adressübersetzung von virtuellen in lineare Adressen mehr statt. Die Selektoren und Deskriptoren für Datensegmente werden ignoriert, die Deskriptoren für Codesegmente werden nur noch zur Ermittlung des Sub-Modus (64-Bit "Long Mode" oder 32-Bit "Compatibility Mode", der bei der Ausführung von 32-Bit-Programme unter einem 64-Bit-Betriebssystem benutzt wird) und der Priviligienstufe (engl. privilege level) des in diesem Segment ausgeführten Codes. Einzig die Segmentregister FS und GS können vom Ring-0 aus über spezielle Maschinenbefehle direkt (ohne auf Segmentdeskriptoren zuzugreifen) eine 64-Bit-Segmentbasisadresse erhalten.
Für Systemsegmente wurde das Format der Segmentdeskriptoren erweitert, so dass sie 64-bittige Basisadressen bzw. Offsets enthalten. Diese Deskriptoren belegen damit effektiv 2 Einträge in den Deskriptortabellen.
Paging und Speicherauslagerung
Die meisten modernen Betriebssysteme für x86-Rechner, wie zum Beispiel Windows, Linux oder Mac OS X, arbeiten in diesem Betriebsmodus. Dabei wird heute zur Realisierung des Speicherschutzes im Wesentlichen nur noch das Paging eingesetzt, während die Segmentierung nicht mehr benutzt wird. Mit diesem Mechanismus kann jedem Prozess in einem Betriebssystem ein eigener, von den anderen Prozessen getrennter virtueller Adressraum bereitgestellt werden. Gleichzeitig lassen sich dadurch aber auch die gemeinsame Speichernutzung zwischen Prozessen, Copy-On-Write-Mechanismen oder Speicherauslagerung sowie eine grobe Einteilung in Kernel- und Benutzeradressraum realisieren.
Sonstiges
Das Gegenstück zum Protected Mode ist der Real Mode, der das Verhalten der 8086-Architektur nachahmt und beim Starten des Prozessors gesetzt ist, so dass ältere Betriebssysteme wie DOS problemlos gestartet werden können. Ferner gibt es im Protected Mode einen Sondermodus, den Virtual 8086 Mode (Virtual Real Mode), der zur Ausführung von Real-Mode-Programmen im Protected Mode eingebaut wurde.
Weblinks
Wikimedia Foundation.