Deskriptoren sind Strukturen, die bei dem 80386-Prozessor eine Länge von 8 Byte besitzen und sich "irgendwo" im Arbeitsspeicher befinden müssen. Sie beschreiben (daher auch der Name: Deskriptor; to describe, englisch, beschreiben) ein Segment im Speicher.
Ein Deskriptor hält dabei die folgenden Eigenschaften eines Segmentes fest:
Leider sieht ein 80386-Deskriptor nicht so "aufgeräumt" aus. Denn um die Kompatibilität zu 80286-Deskriptoren zu gewährleisten, mußten einige der oben genannten Eigenschaften auf mehrere, nicht zusammenhängende Byte verteilt werden.
Abb.2.3 zeigt einen 80386-Deskriptor in allgemeiner Darstellung (Zahlenangaben sind in Bit).
Abb. 2.3: 80386-Deskriptor
Anmerkung: Das niederwertige (Low-)Byte eines Wortes befindet sich nach der Intel-Konvention an der NIEDRIGEREN Adresse!
Neben dem hier dargestellten Deskriptor, der Speichersegmente beschreibt, existieren zwei weitere Deskriptorarten. Dazu zählen Deskriptoren für System-Segmente und sogenannte Gates. Beide Deskriptorarten werden später betrachtet (siehe 2.4 Gates, Interrupts und Exceptions).
Wie sehen die Zusatzinformationen (Zugriffsrechte, Typ) eines Speichersegment-Deskriptors genau aus?
Diese Informationen werden in den Bytes 6 und 7 eines Deskriptors festgehalten. Diese beiden Bytes entsprechen dem High-Byte von Wort 3 (Byte 6) und dem Low-Byte von Wort 4 (Byte 7). Abbildung 2.4 zeigt den genauen Aufbau von Byte 6.
Abb. 2.4: Verschlüsselung der Zugriffsinformationen im Deskriptor-Byte 6
Das Type-Feld innerhalb des Deskriptors legt den Segmentyp und damit die mit dem Segment erlaubten Operationen fest. Die Operationen sind dabei in 3 Bit codiert (Vgl. Abb. 2.5).
Abb. 2.5: Festlegung des Segmenttyps im Type-Feld des Deskriptors
Tabelle 2.1 gibt einen Überblick über die möglichen Segmentypen.
Nr. | binär | Typ | Eigenschaften |
---|---|---|---|
0 | 000b | Datensegment (schreibgeschützt) | nur Lesen |
1 | 001b | Datensegment | Lesen und Schreiben erlaubt |
2 | 010b | reserviert | für zukünftige Erweiterungen |
3 | 011b | nach unter erweiterbares "expand down" Datensegment | für Stacksegmente verwendbar |
4 | 100b | Codesegment | nur ausführbar, nicht lesbar |
5 | 101b | Codesegment | ausführbar und lesbar |
6 | 110b | "Conforming"-Codesegment | nur ausführbar |
7 | 111b | "Conforming"-Codesegment | ausführbar und lesbar |
Weitere Informationen über das Segment befinden sich in den höherwertigen 4 Bit des Deskriptor-Bytes 7 (Vgl. Abb. 2.6)
Abb. 2.6: Weitere Segmentinformationen