FreeRTOS Instance Level Specialization - Static Generation of System Objects

FreeRTOS is an open source real-time operating system used for embedded systems. Configuration of the OS and it's features is currently done on level of abstractions. This means developers are able to select, for example, whether they want locks to be reentrant or not. Instantiation of operating-system objects in FreeRTOS is done dynamically during runtime in a POSIX like style. Previous work has shown that by using knowledge about all possibly existing OS objects it is possible to improve nonfunctional properties of the whole system. The benefits may be but are not limited to reduced memory footprint and robustness against transient faults or improved security. Although, there are functions which pretend to instantiate objects statically, the heavy lifting is done at runtime.

In this thesis, the student develops a code generator which uses the gathered information of an application to generate os objects at compile time. The objects should be statically placed in memory and initialized as if the os had done this. In a second step the internal book keeping structures should be analyzed. Task bookkeeping in FreeRTOS, for example, is done using dynamically linked lists. This structures may be replaced by others to further improve nonfunctional properties. A possible replacement is a field of known size and position which has a smaller memory footprint resulting from less organization overhead. It is target of the thesis to evaluate the benefits of the resulting variations and to compare their properties to the default FreeRTOS system.

tl;dr: Improve FreeRTOS nonfunctional properties by eliminating dynamic object instantiation.

OSPERT Workshop Best Paper Award
Levels of Specialization in Real-Time Operating Systems
Björn Fiedler, Gerion Entrup, Christian Dietrich, Daniel LohmannProceedings of the 14th Annual Workshop on Operating Systems Platforms for Embedded Real-Time Applications (OSPERT '18)2018Best Paper Award.
PDF [BibTex]