Vous êtes sur la page 1sur 1

Université de Blida 1

Département d’Electronique
ESE Master 2
STR Année 2018-2019

TP STR N°1
Ordonnancement à priorités fixes et
méthode RM
On souhaite implémenter et exécuter un jeu de tâches périodiques pour simuler une
application temps réel embarquée sur un véhicule automobile.
L'application offre des services de navigation (recherche d'itinéraires optimum en temps, en
distance, etc). Elle est constituée de trois tâches périodiques indépendantes :

1. La première traite les informations émises par des satellites GPS. Elle est invoquée
toutes les 600 ms. Chaque activation nécessite 80 ms de temps processeur.
2. La seconde tâche consulte un gyroscope qui permet d'évaluer la direction prise par
l'automobile. Sa période est de 100 ms. Son temps d'exécution est borné par 60 ms.
3. Enfin, la dernière tâche lit le compteur de roues toutes les 300 ms. Cette opération
nécessite 60 ms de temps processeur.

Questions :

1. On souhaite utiliser la méthode RM (mode préemptif) pour ordonnancer cette


application. Associez à chaque tâche une priorité conforme à Rate Monotonic (la plus
haute priorité est affectée à la tâche la plus courte). On prendra 1 unité de temps = 10
ms de l'application.

Vérifier que l'application est ordonnançable. Toutes les tâches démarrent en même temps.
On suppose les échéances égales aux périodes. Dessinez l'ordonnancement généré sur la
période d'étude.

2. Etablir l’organigramme puis écrire et compiler le programme vehicule.c. Ce


programme simule l'application décrite ci-dessus. Dans un premier temps, affecter la
priorité 0 à toutes les tâches.
3. Executer l'application et noter l'ordonnancement généré. Les contraintes temporelles
sont elles respectées ?
4. Modifiez le programme vehicule.c de sorte qu'à chaque tâche soit affectée la priorité
déterminée par Rate Monotonic. Vous devez affecter des priorités dans la fourchette
de valeur de 1 à 99. Exécutez cette application, puis, comparez l'ordonnancement
généré par rapport à celui prévu dans la question 1 et celui généré dans la question 3.
Que constatez vous ?

Dans un premier temps les unités de temps sont générées par des compteurs, puis une fois
l’algorithme d’ordonnancement testé, incorporer et programmer un timer (include time.h) que
vous devrez appeler pour basculer d’une tâche à une autre comme commandé par
l’ordonnanceur.