wiki:GSoC/2014/ParavirtualizationOfRTEMS

Version 1 (modified by Youren Shen, on Aug 17, 2014 at 3:48:22 PM) (diff)

Created page with "The project this year continues with the consequent of last year. We share the same goal, to introduce a virtualization layer into RTEMS. The different between this year and l..."

GSOC 2014 - Paravirtualization of RTEMS

The project this year continues with the consequent of last year. We share the same goal, to introduce a virtualization layer into RTEMS. The different between this year and last year is that we focus on hypervisor more this year. We designed two mechanism to connect guest OS and host OS. The one is hypercall to send request from guest OS to host OS. And the notification mechanism to send request from host OS to guest OS. By designing these two mechanisms in POK, the RTEMS will co-work well with POK. You can find the Wikipedia page for last year.

And the proposal of this year.

The source code can be found in my github repository.

Partitioned OS kernel – POK

The POK kernel is an partitioned OS based on ARINC 653 compliant. The target of us is adapt the POK kernel to an hypervisor to fit RTEMS paravirtualization. To adapt the POK kernel, the essential premise is understood how the POK worked. = The POK startup flow =

How to startup on x86 architecture is a common sense. But we still should focus on how POK set GDT, to know the privilege level and segment setting. Also it’s important to understand interrupt handling mechanism in POK when dealing with interrupt delivery.

pok_ret_t pok_arch_init ()
{
  pok_gdt_init ();
  pok_event_init ();
  return (POK_ERRNO_OK);
}

The POK initialize the GDT and IDT in this two function. For more details, please see this two blogs.POK Startup Flow and The syscall system in POK= The POK context switch function. =

This function is interesting because it’s different with other operating system. It will used the structure context_t to emulate the interrupt and interrupt return behavior.

For more detail please see this blog.