• 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
      • Eingebettete Systemsoftware
      • 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 2024/25
      • Betriebssysteme
      • Middleware – Cloud Computing
      • Systemprogrammierung 2
      • Verlässliche Echtzeitsysteme
      • Virtuelle Maschinen
      • Web-basierte Systeme
    Portal Lehre
  • Examensarbeiten
  1. Startseite
  2. Extern

Extern

Bereichsnavigation: Lehre
  • Betriebssystemtechnik
    • Vorlesung
      • Folien
      • Glossar
    • Übung
      • Aufgaben
      • Dokumentation
        • Blog
          • Entwicklungsumgebung
            • Assembler Crashkurs
              • C++ Crashkurs
                • 🔗 Testrechnerverwaltung
                • Kontakt
              • Evaluation

              Dokumentation

              Classes | Enumerations | Functions
              GDT Namespace Reference

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

              Classes

              struct  SegmentDescriptor.__unnamed34__
               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.__unnamed34__

              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