• 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
  • Betriebssysteme
    • Vorlesung
      • Folien
    • Übung
      • Seminar
      • Aufgaben
      • Aufgabe 0: C++ Streams
        • Aufgabe 1: Ein-/Ausgabe
          • Aufgabe 2: Unterbrechungen
            • Aufgabe 3: Pro-/Epilog
              • Aufgabe 4: Kontextwechsel
                • Aufgabe 5: Zeitscheiben
                  • Aufgabe 6: Synchronisation
                    • Aufgabe 7: Anwendung
                      • Assembler Crashkurs
                        • C++ Crashkurs
                          • Entwicklungsumgebung
                            • FAQ
                              • Ruhmeshalle
                              • Evaluation

                              C++ Crashkurs

                              Functions | Constants
                              ApplicationProcessor Namespace Reference

                              Application Processor Boot. More...

                              Functions

                              void relocateSetupCode ()
                               Relocate the real mode setup code. More...
                               
                              void boot ()
                               Boot all application processors. More...
                               

                              Constants

                              constexpr GDT::SegmentDescriptor ap_gdt []
                               Temporary Global Descriptor Table. More...
                               
                              const uintptr_t RELOCATED_SETUP = 0x40000
                               Address (below 1 MiB) to which the setup code gets relocated.
                               

                              Detailed Description

                              Application Processor Boot.

                              Interface to boot the APs

                              Function Documentation

                              void ApplicationProcessor::relocateSetupCode ( )

                              Relocate the real mode setup code.

                              The application processors (APs) start in real mode, which means that your setup code must be placed within the first megabyte – your operating system resides currently at a much higher address (16 MiB), so the code has to be copied down there first.

                              Luckily, the code in setup_ap() can be relocated by copying – because it does not use any absolute addressing (except when jumping to the protected mode function startup_ap()). The function must be copied to the address of RELOCATED_SETUP (0x40000), so that the APs can start there.

                              The memory section contains a reserved area for the GDT and its descriptor, which has to be assigned first with the contents of ap_gdt.

                              Note
                              You could also tell the linker script to put the code directly at the appropriate place, but unfortunately the Qemu multiboot implementation (via -kernel parameter) can't handle it properly.
                              void ApplicationProcessor::boot ( )

                              Boot all application processors.

                              Performs relocation by calling relocateSetupCode()

                              See also
                              ISDMv3, 8.4.4.2 Typical AP Initialization Sequence

                              Constant Documentation

                              constexpr GDT::SegmentDescriptor ApplicationProcessor::ap_gdt[]
                              constexpr
                              Initial value:
                              = {
                              {},
                              { 0x0,
                              0xFFFFFFFF,
                              true,
                              0,
                              GDT::SIZE_32BIT },
                              { 0x0,
                              0xFFFFFFFF,
                              false,
                              0,
                              GDT::SIZE_32BIT },
                              }
                              GDT::SIZE_32BIT
                              @ SIZE_32BIT
                              32-bit (D/B = 1, L = 0)
                              Definition: gdt.h:48

                              Temporary Global Descriptor Table.

                              Blue print, to be copied into real mode code

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

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