Version 5 (modified by Gedare, on Feb 11, 2012 at 2:45:01 AM) (diff)

RTEMS Paravirtualization

Table of Contents

    Error: Page Projects/Paravirtualization does not exist


Status: New features to be designed. A previous GSOC project started to investigate this topic. See RTEMSSummerOfCode2011

Introduction: The overall project consists in adapting RTEMS to be executed on top of an hypervisor so that we can run RTEMS instances on a partitioned kernel (such as ARINC653-related isolation layers like PikeOS, VxWorks?, etc...). To do so, it is necessary to (1) define a architecture-agnostic API to run RTEMS as a guest operating system and (2) tailor an existing hypervisor to execute RTEMS instances in several partitions.

Goal: make RTEMS compliant with partitioned kernel/isolation layer and make a proof-of-concept by collocating several RTEMS instances on top of an existing FOSS separation kernel

Requirements: low-level development, intel/sparc instructions, kernel design

Resources: Existing partitioning/isolation layer, such as POK (see or AIR (

Proposed Approach

The project could be separated in two different efforts : define an API in RTEMS to execute privileged instructions and adapt an existing partitioning kernel to execute RTEMS instance.

Adapt RTEMS for privileged instructions

This consists in reviewing RTEMS code and indentify which part of the code requires privileged instructions. After these code review efforts, the goal of this first activity would be used to design an architecture-agnostic API to perform privileged instructions. Basically, these instructions would be adapted when RTEMS is running as a guest OS, making hypercalls to the hypervisor layer.

Finally, last part of this efforts would consist in implementing the API for one or two architectures (ideally x86 and SPARC).

For that, the project could reuse the results of the previous Google Summer of Code project (in 2011) (see RTEMSSummerOfCode2011)

Adapt existing isolation layer

Second step of this project is to adapt an existing partitioning kernel/isolation layer to execute RTEMS instances. Ideally, this would be implemented in an existing FOSS isolation layer. Actually, two FOSS projects provide such functionalities : Air and POK. Ideally, developers may evaluate the feasibility on each isolation kernel and choose the most appropriate solution.