Hi,

2017-03-22 23:45 GMT+01:00 Adam Lackorzynski <adam@os.inf.tu-dresden.de>:

Basically the vCPU model is an asynchronous execution model, that is
very similar to an actual CPU. I.e. you have vCPU that executes code and
that has an entry vector that is being jumped to whenever the vCPU shall
get an event (both asynchronous interrupts and synchronous exceptions).
To prevent diverting to the entry code there's a virtual interrupt flag,
i.e. if virtual interrupts are off, no message/interrupt will be posted.
Based on that multi-threading in the vCPU is implemented, i.e. some
timer triggers an interrupts, which in turn triggers some scheduling
code running in the vCPU which in turn does some stack switching.
You can also look into this paper
http://os.inf.tu-dresden.de/papers_ps/rtlws2010_genericvirt.pdf

So, in that case, I have to implement my own scheduler to run it into one vCPU ? We don't have the code of the old scheduler.
 
I'm sure you've heard e.g. about Intel VT, or ARM's Virtualization
Extensions. Those are CPU features that basically allow you to
efficiently(!) execute OS kernels deprivileged, by providing another
layer of address translation and proper CPU exception handling. OSs
need to integrate those mechanism to run unmodified guest kernels.
In L4Re this is also mapped to a vCPU which however has more state.
The virtual platform is provided by a VMM component.

OK, I will have a look at that. Thank you for your answers.
 
Regards
Marc