Under the hood

This chapter gives insight into the inner workings of the Genode OS framework. In particular, it explains how the concepts explained in Chapter Architecture are realized on different kernels and hardware platforms.


  1. Component-local startup code and linker scripts
    1. Linker scripts
    2. Startup code
  2. C++ runtime
    1. Rationale behind using exceptions
    2. Bare-metal C++ runtime
  3. Interaction of core with the underlying kernel
    1. System-image assembly
    2. Bootstrapping and allocator setup
    3. Kernel-object creation
    4. Page-fault handling
  4. Asynchronous notification mechanism
  5. Parent-child interaction in detail
  6. Dynamic linker
    1. Building dynamically-linked programs
    2. Startup of dynamically-linked programs
    3. Address-space management
  7. Execution on bare hardware (base-hw)
    1. Bootstrapping of base-hw
    2. Kernel entry and exit
    3. Interrupt handling and preemptive multi-threading
    4. Split kernel interface
    5. Public part of the kernel interface
    6. Core-private part of the kernel interface
    7. Scheduler of the base-hw kernel
    8. Sparsely populated core address space
    9. Multi-processor support of base-hw
    10. Asynchronous notifications on base-hw
  8. Execution on the NOVA microhypervisor (base-nova)
    1. Integration of NOVA with Genode
    2. Bootstrapping of a NOVA-based system
    3. Log output on modern PC hardware
    4. Relation of NOVA's kernel objects to Genode's core services
    5. Page-fault handling on NOVA
    6. Asynchronous notifications on NOVA
    7. IOMMU support
    8. Genode-specific modifications of the NOVA kernel
    9. Known limitations of NOVA