Zum Inhalt springen

Protected Mode

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 16. Juni 2010 um 19:27 Uhr durch PerfektesChaos (Diskussion | Beiträge) (danke für die linkerg; wir haben aber nicht gleichzeitig Abk. und Vollname im Lemma). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Der Begriff protected mode (englisch; deutsch: geschützter Modus oder Schutzmodus), 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, von Apple seit Umstellung auf die Intel-Plattform, also mit OSX 10.4.4) verwendet.

Charakteristika

Im Protected Mode 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 über 2 Tabellen mit jeweils 8192 Segmenten zu je maximal 64 KB angesprochen werden. Damit steht ein theoretischer Speicherraum von 1 TB zur Verfügung. 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

Mit dem 386er wurde der Protected Mode auf 32 Bit erweitert, mit dem man bis zu 4 GB physischer Hauptspeicher in 8192 Segmenten zu je maximal 4 GB angesprechen kann. 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. In diesem Modus gibt es de facto keine Segmentation mehr (mit einer Ausnahme, siehe weiter im Text). Die Basisaddresse der Segmente ist fest auf 0 gesetzt. Der Deskriptor für das Codesegment wird 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), der 'Default Operation Size' und der Priviligienstufe (engl. „privilege level“) des in diesem Segment ausgeführten Codes verwendet. 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 im Protected Mode. 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. Dieses Flat Memory Model ist nicht sicher vor Bufferoverflows.

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.

Siehe auch