
Abstraktion der GDT, welche hauptsächlich Deskriptoren zu den Speichersegmenten enthält. Mehr ...
Klassen | |
struct | Pointer |
Diese Struktur beschreibt einen GDT Zeiger. Mehr ... | |
union | SegmentDescriptor |
Beschreibt den Aufbau von Segment-Descriptoren. Mehr ... | |
Aufzählungen | |
enum | { KERNEL_CODE_SEGMENT = 1, KERNEL_DATA_SEGMENT = 2 } |
enum | Granularity { GRANULARITY_BYTES = 0, GRANULARITY_4KBLOCK = 1 } |
Einheit für das Segmentlimit. Mehr ... | |
enum | Type { TYPE_SYSTEM16 = 0, TYPE_SYSTEM32 = 1, TYPE_DATA = 2, TYPE_CODE = 3 } |
Segmenttyp. Mehr ... | |
enum | Size { SIZE_16BIT = 0, SIZE_32BIT = 1 } |
Breite im Codesegment. Mehr ... | |
enum | Gate { GATE_TSS = 0x1, GATE_LDT = 0x2, GATE_TSS_BUSY = 0x3, GATE_CALL = 0x4, GATE_TASK = 0x5, GATE_INTERRUPT = 0x6, GATE_TRAP = 0x7 } |
Gatetyp. Mehr ... | |
enum | Mode { REAL_MODE, PROTECTED_MODE, LONG_MODE } |
Modus. | |
Funktionen | |
constexpr Pointer | gdt_protected_mode_pointer (protected_mode) |
constexpr Pointer | gdt_long_mode_pointer (long_mode) |
Variablen | |
constexpr SegmentDescriptor | protected_mode [] |
constexpr SegmentDescriptor | long_mode [] |
Abstraktion der GDT, welche hauptsächlich Deskriptoren zu den Speichersegmenten enthält.
Bei der GDT handelt es sich um eine Tabelle von im Wesentlichen Segment-Deskriptoren. Ein solcher Deskriptor hat eine Größe von 8 Byte und beinhaltet die Größe, die Position, die Zugriffsberechtigungen und Verwendung eines Segmentes. Die GDT ist, anders als die LDT, für alle Prozesse verfügbar und kann neben den Segment- Deskriptoren bei Bedarf auch TSS- und LDT-Deskriptoren enthalten. Obligatorisch für den Kernel sind dabei nur der Nulldeskriptor (der erste Eintrag) und das Code- und Datensegment. Will man auch Userspace-Prozesse unterstützen, werden zusätzlich ein TSS-Deskriptor und die Code-/Datensegmente für Ring 3 benötigt. Die Basisadresse und Länge der GDT wird während des Bootvorgangs in das GDTR-Register geladen (mittels lgdt
).
enum GDT::Gate |
enum GDT::Granularity |
enum GDT::Size |
enum GDT::Type |
constexpr SegmentDescriptor GDT::long_mode[] |
constexpr SegmentDescriptor GDT::protected_mode[] |