This list is just a collection of thesis ideas that were already formulated. We always have more interesting ideas, which were not written down yet, on the topics operating systems, real-time systems, dependability, software variability, etc. So, if this list is empty, you find none of the presented thesis ideas interesting, or you have this one brilliant idea you want to pursue, just come around or write a mail.

Open Topics

A Graph-Based Virtual-Memory Benchmark Description Language

 
Typ: Bachelorarbeit
Status: offen
Supervisors: Yannick Loeck
Project: ParPerOS
Create the base for the VMStress Benchmark Generator with a language that describes benchmark execution patterns.

Running Theses

Design and Prototypical Implementation of a Message-Broker Proxy for Mixed-Criticality Real-Time Systems

 
Typ: Bachelorarbeit
Status: reserviert
Supervisors: Christian Dietrich
This bachelor thesis aims to design and implement a message-broker proxy for mixed-criticality real-time systems that use a data-centric architecture and UDP for communication. The thesis evaluates different scheduling algorithms that ensure data refreshness and round trip times.

Implementing CPU-Local Free-Page Management for an Explicit Virtual-Memory Interface in Linux

 
Typ: Bachelor-/Masterarbeit
Status: laufend
Supervisors: Yannick Loeck, Christian Dietrich
Rework the distribution strategy for memory pages in exmap, a new OS interface for explicit Memory-Mapped File I/O.

Generalized Memory Pool with Fixed IO-MMU Mappings

Typ: Masterarbeit
Status: reserviert
Supervisors: Yannick Loeck, Christian Dietrich
Project: ParPerOS
Interact with the IO-MMU through fixed buffers within an in-kernel memory pool abstraction.

Lua as a General-Purpose Extension Language in Linker Scripts for Embedded Systems

Typ: Bachelor-/Masterarbeit
Status: laufend
Supervisors: Niklas Gollenstede, Christian Dietrich
Project: ATLAS
Embed Lua into the llvm-lld linker as a Turing-complete alternative to .ld-scripts.

NVMe Disk Driver for the OSv Unikernel

Typ: Bachelor-/Masterarbeit
Status: reserviert
Supervisors: Christian Dietrich
Implement an NVMe disk driver for the OSv unikernel

Program Structure for Heterogeneous Instruction Set Architectures

 
Typ: Bachelor-/Masterarbeit
Status: laufend
Supervisors: Niklas Gollenstede, Christian Dietrich
Project: ATLAS
Explore new program structures that run on and fully utilize CPUs with heterogeneous ISAs.

Finished Theses

System-call offloading via Linux' io_uring on the Jailhouse partitioning hypervisor

Typ: Bachelorarbeit
Status: abgeschlossen
Supervisors: Christian Dietrich
Bearbeiter: Kelvin Andres Reichenbach (abgegeben: 17. Nov 2021)
Integrate the io_uring asynchronous system-call interface with the partioning hypervisor Jailhouse. Thereby, hypervisor cells are able to offload I/O to the bystanding Linux cell. [PDF]

Dynamic Firmware Reconfiguration in Heterogeneous Embedded Multi-Core Systems

Typ: Masterarbeit
Status: abgeschlossen
Supervisors: Christian Dietrich
Run-time reconfiguration of running processes via dynamic-library replacement

Data-Flow Sensitive Fault Space Pruning for RISC-V

Typ: Bachelor-/Masterarbeit
Status: abgeschlossen
Supervisors: Christian Dietrich
Refactor the existing DFPrune algorithm to also support the RISC-V architecture

Porting and integration the StuBS operating system with the Jailhouse partioning hypervisor

Typ: Bachelorarbeit
Status: abgeschlossen
Supervisors: Christian Dietrich
Porting and integration the StuBS operating system with the Jailhouse partioning hypervisor.

Primitives and Abstractions for Self-Contained Virtual-Memory Areas in the Linux kernel

Typ: Masterarbeit
Status: abgeschlossen
Supervisors: Christian Dietrich
This thesis implements the basic abstraction for self-contained virtual-address-space areas in Linux, by which we want to ease the allocation, the sharing, and the management of huge amounts of memory.

Programmierbare asynchrone Ein-/Ausgabe auf Basis von io_uring und eBPF

Typ: Masterarbeit
Status: abgeschlossen
Supervisors: Christian Dietrich, Horst Schirmeier
[External at TU Dortmund] Ziel dieser Masterarbeit ist es, eine in der Community in Entwicklung befindliche eBPF-Erweiterung [2] für io_uring anhand realistischer und komplexer Anwendungsfälle wie dem Key-Value-Store MrCache, aber auch der in der Vorarbeit identifizierten Problemfälle, zu analysieren.

High-Level Interface with C++20 Coroutines for Asynchronous I/O using io_uring and eBPF

Typ: Forschungsprojekt
Status: abgeschlossen
Supervisors: Christian Dietrich
Bearbeiter: Hendrik Sieck (abgegeben: 17. Mar 2022)
Use C++20 Co-Routines to ease the usage multi-system-calls in Linux

Design and Implementation of a Light-Weight Container Runtime for Real-Time Applications

 
Typ: Masterarbeit
Status: abgeschlossen
Supervisors: Christian Dietrich
Bearbeiter: Niklas Gollenstede (abgegeben: 31. Aug 2022)
Create a light-weight container run-time that adheres to the statical-configuration paradigm.

Static Multivariant ELFs for Memory-Constrained Systems

Typ: Masterarbeit
Status: abgeschlossen
Supervisors: Christian Dietrich
Goal of this thesis is to modify the LLVM Linker to produce ELF binaries with static multivariant code overlays. Thereby, different pointer coalescing stategies should be developed and compared.

NixDiff: Offline Compression of Differential Updates for Declaratively-Configured Embedded Linux Systems

 
Typ: Bachelorarbeit
Status: abgeschlossen
Supervisors: Niklas Gollenstede, Christian Dietrich
Decrease the size of NixOS updates, especially for embedded systems, by removing redundant file blocks from the transferred packages

Pruning of Soft-Error Fault Spaces by Dynamic Register-Usage Tracing in a Formal Instruction-Set Model

Typ: Masterarbeit
Status: abgeschlossen
Supervisors: Christian Dietrich, Daniel Lohmann
Project: CLASSY-FI
[External at Leibniz Universität Hannover] In this thesis, the SAIL compiler should be extended to allow the C-emulator to record all dynamic register reads and writes to these state registers. This information should then be integrated into the FAIL* toolchain to inject only those state registers that are actually used by a given executed instruction.