Simulateur d’un ordonnanceur temps réel pour multi-cœurs

Encadrants : 

Occurrences : 

2015

Nombre d'étudiants minimum: 

4

Nombre d'étudiants maximum: 

4

Nombre d'instances : 

1

Les systèmes embarqués temps réel se composent de tâches périodiques qui doivent respecter des échéances de temps, notamment que chaque exécution de la tâche soit terminée avant sa période et donc sa nouvelle activation. Pour assurer ces contraintes, l’algorithme d’ordonnancement doit être spécifique et notamment diffère de ceux que l’on peut trouver sur les systèmes d’exploitation à temps partagé comme Unix. Ces algorithmes sont très bien connus lorsque la plate-forme d’exécution est un mono-processeur. Par contre, les algorithmes pour plate-forme multi-processeurs sont encore en cours de définition.

Dans le cadre de ce projet, on souhaite concevoir un simulateur pour l’algorithme d’ordonnancement RUN [1], qui est un algorithme d’ordonnancement pour multi-processeurs extrêmement intéressant. En effet, il est optimal et produit peu de préemptions contrairement à ces concurrents. Il se décompose en deux parties. Une partie hors-ligne qui place les taches sur les cœurs, une partie en-ligne qui exécute effectivement les taches en fonction de la configuration fournie par la partie hors-ligne. L’algorithme est relativement ingénieux puisqu’il consiste schématiquement à transformer de manière optimale un ordonnancement sur m multi-processeurs en m problèmes d’ordonnancement en mono-processeur.

Chaque partie du projet sera prise en charge par deux élèves. Dans les deux cas, la programmation se fera en C. Notamment, la partie en-ligne nécessitera de se former à l’interface POSIX. Nous fournirons des éléments de code issus d’un TP qui permettront de démarrer. Le travail est destiné également à servir de TP pour illustrer RUN dans un cours de M2 en systèmes embarqués temps réel.

[1] RUN: Optimal Multiprocessor Real-Time Scheduling via Reduction to Uniprocessor.  RTSS 2011 : 104-115