• Navigation überspringen
  • Zur Navigation
  • Zum Seitenende
Organisationsmenü öffnen Organisationsmenü schließen
Friedrich-Alexander-Universität Lehrstuhl für Informatik 4 (Systemsoftware)
  • FAUZur zentralen FAU Website
  1. Friedrich-Alexander-Universität
  2. Technische Fakultät
  3. Department Informatik
Suche öffnen
  • English
  • Campo
  • StudOn
  • FAUdir
  • Stellenangebote
  • Lageplan
  • Hilfe im Notfall
  1. Friedrich-Alexander-Universität
  2. Technische Fakultät
  3. Department Informatik
Friedrich-Alexander-Universität Lehrstuhl für Informatik 4 (Systemsoftware)
Menu Menu schließen
  • Lehrstuhl
    • Team
    • Aktuelles
    • Kontakt und Anfahrt
    • Leitbild
    • 50-jähriges Jubiläum
    Portal Lehrstuhl
  • Forschung
    • Forschungsbereiche
      • Betriebssysteme
      • Confidential Computing
      • Embedded Systems Software
      • Verteilte Systeme
    • Projekte
      • AIMBOS
      • BALu
      • BFT2Chain
      • DOSS
      • Mirador
      • NEON
      • PAVE
      • ResPECT
      • Watwa
    • Projektkampagnen
      • maRE
    • Seminar
      • Systemsoftware
    Portal Forschung
  • Publikationen
  • Lehre
    • Sommersemester 2025
      • Applied Software Architecture
      • Ausgewählte Kapitel der Systemsoftware
      • Betriebssystemtechnik
      • Projekt angewandte Systemsoftwaretechnik
      • System-Level Programming
      • Systemnahe Programmierung in C
      • Systemprogrammierung 1
      • Verteilte Systeme
    • Wintersemester 2025/26
      • Systemprogrammierung 2
      • Betriebssysteme
      • Middleware – Cloud Computing
      • Echtzeitsysteme
      • Virtuelle Maschinen
      • Web-basierte Systeme
      • Projekt angewandte Systemsoftwaretechnik
      • Aktuelle Entwicklung in Verteilten und Objektorientierten Betriebssystemen (für Bachelor-/Masterarbeit)
    Portal Lehre
  • Examensarbeiten
  1. Startseite
  2. Extern

Extern

Bereichsnavigation: Lehre
  • Betriebssysteme
    • Vorlesung
      • Folien
    • Übung
      • Seminar
      • Aufgaben
      • Aufgabe 0: C++ Streams
        • Aufgabe 1: Ein-/Ausgabe
          • Assembler Crashkurs
            • C++ Crashkurs
              • Entwicklungsumgebung
                • FAQ
                  • Ruhmeshalle

                Aufgabe 1: Ein-/Ausgabe

                Classes | Enumerations | Functions
                GDT Namespace Reference

                Abstracts the GDT that, primarily, contains descriptors to memory segments. More...

                Classes

                struct  SegmentDescriptor.__unnamed23__
                 Fields specific for Data Segment (for debugging purposes) More...
                 

                Enumerations

                enum  Segments {
                  SEGMENT_NULL = 0 ,
                  SEGMENT_KERNEL_CODE ,
                  SEGMENT_KERNEL_DATA
                }
                 
                enum  Granularity {
                  GRANULARITY_BYTES = 0 ,
                  GRANULARITY_4KBLOCK = 1
                }
                 Unit of the segment limit. More...
                 
                enum  DescriptorType {
                  DESCRIPTOR_SYSTEM = 0 ,
                  DESCRIPTOR_CODEDATA = 1
                }
                 Descriptor type. More...
                 
                enum  Size {
                  SIZE_16BIT = 0 ,
                  SIZE_32BIT = 2 ,
                  SIZE_64BIT_CODE = 1 ,
                  SIZE_64BIT_DATA = 0
                }
                 Address width. More...
                 

                Functions

                constexpr Pointer gdt_protected_mode_pointer (protected_mode)
                 
                constexpr Pointer gdt_long_mode_pointer (long_mode)
                 

                Detailed Description

                Abstracts the GDT that, primarily, contains descriptors to memory segments.

                The GDT is a table that primarily contains segment descriptors. Segment descriptors has a size of 8 Bytes and contains the size, position, access rights, and purpose of such a segment. Unlike the LDT, the GDT is shared between all processes and may contain TSS and LDT descriptors. For the kernel, the first entry is required to be a null descriptor and the code and data segments. To support user-mode processes, additional TSS, code, and data segments for ring 3 must be added.

                The base address and size of the GDT are written to the GDTR register during boot (via. lgdt).

                See also
                ISDMv3, 2.4.1; Global Descriptor Table Register (GDTR)
                ISDMv3, 3.5.1; Segment Descriptor Tables

                Class Documentation

                struct GDT::SegmentDescriptor.__unnamed23__

                Fields specific for Data Segment (for debugging purposes)

                See also
                ISDMv3, 3.4.5.1; Code- and Data-Segment Descriptor Types
                Class Members
                uint64_t __pad0__: 40 Ignored (set via limit_low and base_low)
                bool data_accessed: 1 If set, the data segment was used since the last reset of this value.
                bool writeable: 1 If set, data is writable (otherwise read only)
                bool expand_down: 1 Growing direction for dynamically growing segments.
                bool notData: 1 Has to be cleared (false)
                uint64_t __pad1__: 9 Ignored (set via privilege_level ... available)
                uint64_t reserved: 1 Reserved, always set to 0!
                bool big: 1 Size of the stack pointer (false = 16 bit, true = 32 bit)
                Warning
                Has a different meaning in case expand_down is set to 1.
                uint64_t __pad2__: 0 Remainder ignored.

                Enumeration Type Documentation

                enum GDT::Granularity

                Unit of the segment limit.

                Enumerator
                GRANULARITY_BYTES 

                Segment limit in Bytes.

                GRANULARITY_4KBLOCK 

                Segment limit in blocks of 4 Kilobytes.

                enum GDT::DescriptorType

                Descriptor type.

                Enumerator
                DESCRIPTOR_SYSTEM 

                entry is a system segment

                DESCRIPTOR_CODEDATA 

                entry is a code/data segment

                enum GDT::Size

                Address width.

                Enumerator
                SIZE_16BIT 

                16-bit (D/B = 0, L = 0)

                SIZE_32BIT 

                32-bit (D/B = 1, L = 0)

                SIZE_64BIT_CODE 

                64-bit (D/B = 0, L = 1)

                SIZE_64BIT_DATA 

                64-bit (D/B = 0, L = 0)

                Friedrich-Alexander-Universität
                Erlangen-Nürnberg

                Schlossplatz 4
                91054 Erlangen
                • Impressum
                • Datenschutz
                • Barrierefreiheit
                • Facebook
                • RSS Feed
                • Xing
                Nach oben