Implementing a few real time scheduling algorithms on Fiasco.OC

Daniel Krefft daniel.krefft at
Sat May 30 07:21:43 CEST 2015


the questions about scheduling in the archive were actually asked by a 
student of mine for his Bachelor's thesis.

So, to make some points more clear:
1) You always need to implement a kind of fixed-priority scheduling 
(NED, MOE, etc. depend on this)
2) A possible combination is fp_edf (see archive post)
2.1) EDF as a standalone global scheduler (GEDF) is not feasible
3) Fiasco.OC is preemptive (don't try to make it non-preemptive)
4) It is possible to allocate one running queue to one core (kind of 
partitioned scheduling)
4.1) You can implement different scheduling strategies on different 
cores (very cool multicore support)
4.2) Maybe you can try to implement background servers (FP global and 
EDF/RM/... local)
5) Threads can be rebound to tasks at run-time (also a cool feature)
5.1) You can move threads from one task to another (sure the tasks need 
to be similar)
6) I also guess that you can push and pop your threads in and out of 
your running queue at runtime
6.1) Also, you can move a thread (e.g. deadline-based) from one running 
queue to another (both rqs need to be scheduled by the same strategy)

For more details see the formerly mentioned post.

For your next steps it could be important to outline the relations 
between Tasks, Threads and SchedContext ;)

Best regards.
Daniel Krefft

Am 29.05.15 um 11:27 schrieb Vasily A. Sartakov:
> Greetings.
> Please have a look into archives:
>> I'm a student at the university of Antwerp and I'm currently working on
>> my master's thesis. My project is about comparing the performance of
>> a few global multicore scheduling algorithms (G-RM, G-EDF, ...) on
>> an embedded system. A part of my thesis is to make an implementation
>> on a real embedded system equipped with a quadcore processor (i.MX6).
>> To do that I need an RTOS. Fiasco with the l4re at a first sight seems
>> an interesting candidate.
> What do you mean by «RTOS» (please, do not tell real time operating system). How you distinct real time and not real time os? Btw, Fiasco (here) and Fiasco.OC (in the title of mail) are different projects.
>> To test the performance of the above algorithms I will schedule a bunch
>> of randomly generated tasksets comprising some periodic tasks having
>> implicit deadlines* with each of the algorithms and try to detect if any
>> deadlines are missed.
>> * Such a task is executed repeatedly after a fixed amount of time and its
>> deadline is equal to its period, which is the point of time when the next
>> invocation of the task takes place.
>> This brings me to my first question:
>> Would this be achievable with the fiasco kernel?
>> I've been trying to interpret the project of the fiasco kernel during the
>> last days, but this seems easier said than done. As a first step I've been
>> trying to figure out how the scheduler works and how exactly the
>> scheduling policies are implemented. (I have read somewhere the
>> current scheduling policy is fixed priority round robin)
>> Is there perhaps a more documented version of the code or an
>> overview of the different classes, their functions and the way they
>> interact available? It's really hard to figure out a bunch of code
>> without any leads on how exactly the project has been implemented.
>> Besides that I don't really have a clue about how to start developing
>> on the fiasco kernel. Some tips about how to start working on the kernel
>> are always welcome.
>> Has anyone got experience with developing on the fiasco kernel?
>> It would be nice to get some directions on this matter because I'm
>> quite stuck on this.
> This video (and some other videos) can help you:
> --
> Vasily A. Sartakov
> sartakov at
> _______________________________________________
> l4-hackers mailing list
> l4-hackers at

* Daniel Krefft M.Sc.
* T: +49-89-289-18791
* Technische Universitaet Muenchen
* Fakultaet fuer Informatik - F13  (Prof. Baumgarten)
* Boltzmannstr. 3
* D-85748 Garching bei Muenchen
* Germany

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the l4-hackers mailing list