Deskriptor (Prozessor) - LinkFang.de





Deskriptor (Prozessor)


Dieser Artikel oder Abschnitt ist nicht ausreichend belegt.

Als Deskriptor bezeichnet man in Intel-x86-Prozessoren ab 80286 (eingeführt 1982) eine Struktur, welche ein Segment oder eine Funktion im Hauptspeicher beschreibt.

Ein Deskriptor hat eine Größe von 8 Byte und beinhaltet die Größe, die Position, die Zugriffsberechtigungen und Verwendung eines Segmentes. Neben den eben beschriebenen Speichersegmenten gibt es auch Systemsegmente, die zum Beispiel eine Betriebssystemfunktion markieren.

Deskriptoren kommen ausschließlich im Protected Mode vor, im Real Mode haben die Segmente eine konstante Größe von 64 KiB, deshalb werden sie nicht benötigt.

Alle Deskriptoren werden in drei Tabellen eingeteilt.

  • Die GDT (Global Descriptor Table) kann maximal 8192 Deskriptoren aufnehmen und ist für alle Prozesse verfügbar.
  • Die LDT (Local Descriptor Table) ist eine Tabelle, die nur für einen Prozess verfügbar ist. Bei einem Taskwechsel wird häufig auch ihr Inhalt gewechselt.
  • Die dritte Tabelle ist die IDT (Interrupt Descriptor Table). Sie umfasst 256 Deskriptoren, wofür jeder Deskriptor die Startadresse des jeweiligen Interrupts markiert.

Segmentdeskriptoren im 16-/32-Bit Protected Mode

Abkürzung Bezeichnung Bedeutung
Base address Basisadresse des Segments. Das Feld aus historischen Gründen zweigeteilt.
G Granularität Legt fest, ob das Segmentlimit in Byte (G=0) oder in 4-KB-Seiten (G=1) angegeben ist
D/B Default Operand Size Für Codesegmente:
D=1: Operanden haben per Default 32 Bit; D=0: Operanden haben per Default 16 Bit.
(Die Defaultwerte können durch ein "Operand Size Prefix" für den nachfolgenden Maschinenbefehl auf den jeweils anderen Wert geändert werden)
AVL available steht dem Betriebssystem zur freien Verfügung
Segment Limit Größe des Segments in Bytes oder in 4-KiB-Seiten
P Präsent P=1: Segment ist im Speicher vorhanden; P=0: Segment ist zurzeit nicht vorhanden (z.B. zurzeit ausgelagert). Zugriffe auf nicht präsente Segmente lösen eine Ausnahme aus (die vom Betriebssystem abgefangen und dazu genutzt werden kann, das fehlende Segment wieder einzuladen)
DPL Descriptor Privilige Level
S System/User S und Type geben zusammen den Typ des Segmentes an, das durch diesen Deskriptor beschrieben wird (s.u.)
Type

Deskriptor Typen

System-Deskriptoren

S Type Art des Deskriptors
0 (System) 0000 reserviert
0001 verfügbares 16-bit Task Status Segment (TSS)
0010 Local Descriptor Table
0011 benutztes 16-bit Task Status Segment (TSS)
0100 16-bit Call Gate
0101 Task Gate
0110 16-bit Interrupt Gate
0111 16-bit Trap Gate
1000 reserviert
1001 verfügbares 32-bit TSS
1010 reserviert
1011 benutztes 32-bit TSS
1100 32-bit Call Gate
1101 reserviert
1110 32-bit Interrupt Gate
1111 32-bit Trap Gate

Ein "Call Gate"-Segmentdeskriptor beschreibt einen wohldefinierte Einsprungpunkt z.B. für Betriebssystemfunktionen. Call Gates sind im Protected Mode die einzige Möglichkeit für Code mit einer niedrigeren Privilegienstufe Code mit einer höheren Privilegienstufe aufzurufen.

In einem Task Status Segment werden bei einem Taskwechsel (bei Hardware-Multitasking) die Inhalte aller lokalen Register und weitere Statusinformationen automatisch gesichert.

User-Deskriptoren

Bei gesetztem S-Bit gibt das oberste Bit des Type-Feldes an, ob es sich um ein Code- oder Datensegment handelt. Die Bedeutung der übrigen 3 Bits ist bei Code- und Datensegmenten verschieden.

S Type Art des Deskriptors
1 (User) 0EWA Datensegment
E – Expand Down
W – Writable
A – Accessed
1CRA Codesegment
C – Conforming
R – Readable
A – Accessed

Bedeutung der Bits:

E
Expand down – Die Segmentbasisadresse kennzeichnet das obere Ende des Segments, das Limit die Entfernung der unteren Grenze zur gegebenen Basisadresse. Dies ist für Stack-Segmente sinnvoll, da auf der x86-Plattform der Prozessorstack von oben nach unten befüllt wird.
W
Writable – in dieses Segment darf auch geschrieben werden.
A
Accessed – Wird vom Prozessor automatisch auf 1 gesetzt, wenn auf das Segment zugegriffen wurde. Es kann von dem Betriebssystem wieder auf 0 gesetzt werden.
R
Readable – Codesegment kann auch (als Daten) ausgelesen werden. Schreiben in Codesegmente ist generell nicht möglich.

Quelle/Weblink


Kategorien: Rechnerarchitektur

Quelle: Wikipedia - http://de.wikipedia.org/wiki/Deskriptor (Prozessor) (Vollständige Liste der Autoren des Textes [Versionsgeschichte])    Lizenz: CC-by-sa-3.0

Änderungen: Alle Bilder mit den meisten Bildunterschriften wurden entfernt. Ebenso alle zu nicht-existierenden Artikeln/Kategorien gehenden internen Wikipedia-Links (Bsp. Portal-Links, Redlinks, Bearbeiten-Links). Entfernung von Navigationsframes, Geo & Normdaten, Mediadateien, gesprochene Versionen, z.T. ID&Class-Namen, Style von Div-Containern, Metadaten, Vorlagen, wie lesenwerte Artikel. Ansonsten sind keine Inhaltsänderungen vorgenommen worden. Weiterhin kann es durch die maschinelle Bearbeitung des Inhalts zu Fehlern gerade in der Darstellung kommen. Darum würden wir jeden Besucher unserer Seite darum bitten uns diese Fehler über den Support mittels einer Nachricht mit Link zu melden. Vielen Dank!

Stand der Informationen: August 201& - Wichtiger Hinweis: Da die Inhalte maschinell von Wikipedia übernommen wurden, ist eine manuelle Überprüfung nicht möglich. Somit garantiert LinkFang.de nicht die Richtigkeit und Aktualität der übernommenen Inhalte. Sollten die Informationen mittlerweile fehlerhaft sein, bitten wir Sie darum uns per Support oder E-Mail zu kontaktieren. Wir werden uns dann innerhalb von spätestens 10 Tagen um Ihr Anliegen kümmern. Auch ohne Anliegen erfolgt mindestens alle drei Monate ein Update der gesamten Inhalte.