<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Deskriptor_%28Prozessor%29</id>
	<title>Deskriptor (Prozessor) - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Deskriptor_%28Prozessor%29"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Deskriptor_(Prozessor)&amp;action=history"/>
	<updated>2026-06-09T07:17:30Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Deskriptor_(Prozessor)&amp;diff=109382&amp;oldid=prev</id>
		<title>imported&gt;FehlerFinder42: Kategorie Speicherverwaltung hinzugefügt.</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Deskriptor_(Prozessor)&amp;diff=109382&amp;oldid=prev"/>
		<updated>2023-01-19T18:02:59Z</updated>

		<summary type="html">&lt;p&gt;Kategorie Speicherverwaltung hinzugefügt.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Als &amp;#039;&amp;#039;&amp;#039;Deskriptor&amp;#039;&amp;#039;&amp;#039; bezeichnet man in [[Intel]]-[[X86-Prozessor|x86]]-[[Central Processing Unit|Prozessoren]] ab [[Intel 80286|80286]] (eingeführt 1982) eine Struktur, welche ein [[Segmentierung (Speicherverwaltung)|Segment]] oder eine Funktion im [[Arbeitsspeicher|Hauptspeicher]] beschreibt.&lt;br /&gt;
&lt;br /&gt;
Ein Deskriptor hat eine Größe von 8 Byte und beinhaltet die Größe, die Position, die Zugriffsberechtigungen und Verwendung eines Segments. Neben Speichersegmenten gibt es auch Systemsegmente, die zum Beispiel eine Betriebssystemfunktion markieren.&lt;br /&gt;
&lt;br /&gt;
Deskriptoren kommen ausschließlich im [[Protected Mode]] vor und dienen beim 80286 Prozessor dazu, Protected-Mode-fähiger Software trotz der Registerbreite von 16 Bit einen Adressraum von 24 Bit und somit bis zu 16 MiB Speicherplatz zur Verfügung zu stellen. Im [[Real Mode]] werden Deskriptoren nicht verwendet. Dort haben die Segmente eine konstante Größe von 64 [[KiloByte|KiB]] und der maximale Adressbereich ist auf 16 Bit begrenzt, womit ein maximaler Speicher von nur 1 [[Megabyte|MiB]] Größe adressiert werden kann.&lt;br /&gt;
&lt;br /&gt;
Deskriptoren werden in drei Tabellen gespeichert:&lt;br /&gt;
&lt;br /&gt;
* Die GDT ([[Global Descriptor Table]]) kann maximal 8192 Deskriptoren aufnehmen und ist für alle [[Prozess (Computer)|Prozesse]] verfügbar.&lt;br /&gt;
* Die LDT (Local Descriptor Table) ist eine Tabelle, die es für jeden individuellen Prozess mehrfach geben kann. Jeder Prozess besitzt seine eigenen LDTs. Die LDT enthält Speichersegmente, die als privat markiert sind und ausschließlich jeweils einem Prozess zur Verfügung stehen. Zur gleichen Zeit ist immer nur eine einzige LDT verfügbar. Bei einem [[Task]]wechsel auf einen anderen Prozess wird auf eine LDT des anderen Prozesses umgeschaltet.&lt;br /&gt;
* Die dritte Tabelle ist die IDT (Interrupt Descriptor Table). Sie umfasst 256 Deskriptoren, wobei jeder Deskriptor die Startadresse eines [[Interrupt]]s markiert.&lt;br /&gt;
&lt;br /&gt;
== Segmentdeskriptoren im 16-/32-Bit Protected Mode ==&lt;br /&gt;
&lt;br /&gt;
: [[Datei:SegmentDescriptor.svg]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|--&lt;br /&gt;
! Abkürzung !! Bezeichnung !! Bedeutung&lt;br /&gt;
|--&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Base address || Basisadresse des Segments, welche aus historischen Gründen in drei Bereiche aufgeteilt und insgesamt 32 Bit breit ist. Der erste Teil besteht aus dem unteren Feld (Bit 16 bis 31), der zweite Teil aus dem oberen Feld (Bit 0 bis 7) und der dritte Teil aus Bit 24 bis 31 des oberen Feldes.&lt;br /&gt;
|--&lt;br /&gt;
| G || Granularität || Wenn das Bit nicht gesetzt ist (0), geht die Segmentgröße in 1-Byte-Schritten von 1 Byte bis 1 MiB. Wenn das Bit gesetzt ist (1), variiert die Segmentgröße in 4-KiB-Schritten von 4 KiB bis 4 [[Gigabyte (Einheit)|GiB]].&lt;br /&gt;
|--&lt;br /&gt;
| D/B || Default Operand Size || Für Codesegmente:&amp;lt;br /&amp;gt;D=1: Operanden haben per Default 32 Bit; D=0: Operanden haben per Default 16 Bit.&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;(Die Defaultwerte können durch ein &amp;quot;Operand Size Prefix&amp;quot; für den nachfolgenden Maschinenbefehl auf den jeweils anderen Wert geändert werden)&amp;lt;/small&amp;gt;&lt;br /&gt;
|--&lt;br /&gt;
| L || Long || 64-bit code segment (Nur IA-32e Modus). In der Grafik Bit 21 des oberen Feldes (grau, ohne Bezeichner).&amp;lt;!-- Stand 24.8.22 derzeit ohne Bezeichner, die Grafik müsste aktualisiert werden. --&amp;gt;&lt;br /&gt;
|--&lt;br /&gt;
| AVL || &amp;#039;&amp;#039;available&amp;#039;&amp;#039; || Dieses Bit steht dem Betriebssystem zur freien Verfügung. In der Grafik Bit 20 (oberes Feld) mit Bezeichner A.&lt;br /&gt;
|--&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Segment Limit || Segmentgröße in Bytes (G=0) oder in 4-KiB-Seiten (G=1). Das Segment Limit ist zweigeteilt. Der erste Teil besteht aus dem unteren Feld (Bit 0 bis 15), der zweite Teil aus dem oberen Feld (Bit 16 bis 19). Das Segment Limit ist insgesamt 20 Bit breit.&lt;br /&gt;
|--&lt;br /&gt;
| P || Präsent || P=1: Segment ist im Speicher vorhanden; P=0: Segment ist zurzeit &amp;#039;&amp;#039;nicht&amp;#039;&amp;#039; vorhanden (z.&amp;amp;nbsp;B. [[Swapping|ausgelagert]]). Zugriffe auf nicht präsente Segmente lösen eine [[Ausnahmebehandlung|Ausnahme]] aus, die vom Betriebssystem abgefangen und dazu genutzt werden kann, das fehlende Segment wieder in den Speicher zu laden. In der Grafik: oberes Feld, Bit 15&lt;br /&gt;
|--&lt;br /&gt;
| DPL || Descriptor Privilege Level || Spezifiziert das Privilege Level (die Sicherheitsstufe) des Segments. In der Grafik: oberes Feld, Bit 13 und 14. DPL kann den Wert 0 bis 3 annehmen. 0 steht für die privilegierteste Stufe. Siehe: [[Ring (CPU)]]&lt;br /&gt;
|--&lt;br /&gt;
| S || System/User || rowspan=&amp;quot;2&amp;quot; | S (oberes Feld Bit 12) und Type (oberes Feld Bit 8 bis 11) geben zusammen den Typ des Segments an, das durch diesen Deskriptor beschrieben wird (s.&amp;amp;nbsp;u.)&lt;br /&gt;
|--&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Type&lt;br /&gt;
|--&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Deskriptor Typen ===&lt;br /&gt;
&lt;br /&gt;
==== System-Deskriptoren ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! S !! Type !! Art des Deskriptors&lt;br /&gt;
|--&lt;br /&gt;
| rowspan=&amp;quot;16&amp;quot; | 0 (System) || 0000 || &amp;#039;&amp;#039;reserviert&amp;#039;&amp;#039;&lt;br /&gt;
|--&lt;br /&gt;
| 0001 || verfügbares 16-bit Task Status Segment (TSS)&lt;br /&gt;
|--&lt;br /&gt;
| 0010 || [[Local Descriptor Table]]&lt;br /&gt;
|--&lt;br /&gt;
| 0011 || benutztes 16-bit Task Status Segment (TSS)&lt;br /&gt;
|--&lt;br /&gt;
| 0100 || 16-bit Call Gate&lt;br /&gt;
|--&lt;br /&gt;
| 0101 || Task Gate&lt;br /&gt;
|--&lt;br /&gt;
| 0110 || 16-bit Interrupt Gate&lt;br /&gt;
|--&lt;br /&gt;
| 0111 || 16-bit Trap Gate&lt;br /&gt;
|--&lt;br /&gt;
| 1000 || &amp;#039;&amp;#039;reserviert&amp;#039;&amp;#039;&lt;br /&gt;
|--&lt;br /&gt;
| 1001 || verfügbares 32-bit TSS&lt;br /&gt;
|--&lt;br /&gt;
| 1010 || &amp;#039;&amp;#039;reserviert&amp;#039;&amp;#039;&lt;br /&gt;
|--&lt;br /&gt;
| 1011 || benutztes 32-bit TSS&lt;br /&gt;
|--&lt;br /&gt;
| 1100 || 32-bit Call Gate&lt;br /&gt;
|--&lt;br /&gt;
| 1101 || &amp;#039;&amp;#039;reserviert&amp;#039;&amp;#039;&lt;br /&gt;
|--&lt;br /&gt;
| 1110 || 32-bit Interrupt Gate&lt;br /&gt;
|--&lt;br /&gt;
| 1111 || 32-bit Trap Gate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ein &amp;#039;&amp;#039;Call Gate&amp;#039;&amp;#039;-Segmentdeskriptor beschreibt einen wohldefinierte Einsprungpunkt z.&amp;amp;nbsp;B. für Betriebssystemfunktionen. Call Gates sind im Protected Mode für Code mit einer niedrigeren Privilegienstufe die einzige Möglichkeit, Code mit einer höheren Privilegienstufe aufzurufen.&lt;br /&gt;
&lt;br /&gt;
In einem &amp;#039;&amp;#039;Task Status Segment&amp;#039;&amp;#039; (TSS) werden bei einem Taskwechsel (bei Hardware-Multitasking) die Inhalte aller lokalen Register und weitere Statusinformationen automatisch gesichert.&lt;br /&gt;
&lt;br /&gt;
==== User-Deskriptoren ====&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! S !! Type !! Art des Deskriptors&lt;br /&gt;
|--&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 1 (User) || &amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;#039;EWA || Datensegment&amp;lt;br /&amp;gt;E – Expand Down&amp;lt;br /&amp;gt;W – Writable&amp;lt;br /&amp;gt;A – Accessed&lt;br /&gt;
|--&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039;CRA || Codesegment&amp;lt;br /&amp;gt;C – Conforming&amp;lt;br /&amp;gt;R – Readable&amp;lt;br /&amp;gt;A – Accessed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bedeutung der Bits:&lt;br /&gt;
; E:Expand down – Die Segmentbasisadresse kennzeichnet das &amp;#039;&amp;#039;obere&amp;#039;&amp;#039; Ende des Segments, das Limit die Entfernung der &amp;#039;&amp;#039;unteren&amp;#039;&amp;#039; 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.&lt;br /&gt;
; W:Writable – in dieses Segment darf auch geschrieben werden.&lt;br /&gt;
; 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.&lt;br /&gt;
; R:Readable – Codesegment kann auch (als Daten) ausgelesen werden. Schreiben in Codesegmente ist generell nicht möglich.&lt;br /&gt;
&lt;br /&gt;
== Quelle/Weblink ==&lt;br /&gt;
* [http://www.intel.com/Assets/PDF/manual/253668.pdf Intels Dokumentation für Systemprogrammierer (englisch)]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Speicherverwaltung]]&lt;br /&gt;
[[Kategorie:Rechnerarchitektur]]&lt;/div&gt;</summary>
		<author><name>imported&gt;FehlerFinder42</name></author>
	</entry>
</feed>