Vous êtes sur la page 1sur 23

Département Génie Électrique

PROGRAMMATION DES SYSTEMES


TEMPS REEL
Filière :
« Génie Électrique et Contrôle des Systèmes Industriels »
GECSI

RAPPORT TP1
STRUCTURE D’ORDONNANCEMENT
« HPF et RATE MONOTONIC »

Réalisé par : Professeur :


BONLOUGOU Ouénigamou M. El KHAILI
DA Apollinaire

Année Universitaire : 2020-2021


IntroductIon
Durant les trois mois passés, nous avons eu un cours assez riche et détaillé théoriquement sur
les systèmes temps réels. Afin de comprendre plus en profondeur ces systèmes en question et
comprendre leur fonctionnement physique, nous nous devons donc d’approfondir nos
connaissances théoriques acquises par des travaux pratiques. C’est dans ce sens que nous nous
sommes lancés pour défi, d’atteindre cet objectif à travers ce TP dont l’objectif ultime est
d’étudier la structure d’ordonnancement « HPF et Rate Monotonic ». Pour ce faire nous allons
d’abord étudier un ordonnanceur à priorités fixes, et en particulier, celui proposé dans le
standard POSIX.4. Ce type d'ordonnanceur est présent dans presque tous les systèmes
d'exploitation et permet une mise en œuvre aisée de la méthode Rate Monotonic. Pour ce
faire, nous allons dans un premier temps étudier des ordonnanceurs classiques dans la
première manipulation. Par la suite, nous allons dans la deuxième manipulation implantater
un ordonnanceur POSIX.4 et dans la dernière manipulation, nous allons mettre en œuvre un
Ordonnancement à priorités fixes et méthode RM
Pour pouvoir réussir cette tâche, nous allons mener l'étude de cet ordonnanceur à travers d'un
petit simulateur en C, le DEVC++ qui est un environnement de développement intégré
permettant de programmer en C et en C++ pour les systèmes d’exploitation Windows.
ManIpulatIon 1 : ordonnanceurs classIques
Question 1 : Ordonnancement de la plus haute priorité d'abord

1. Récupération des fichiers


Les fichiers file_de_taches.h et file_de_taches.c qui contiennent la
définition des tâches et des files d'attente. Les informations d'une tâche
sont contenues dans un descripteur de tâches.
Les fichiers simu_posix.h et simu_posix.c qui contiennent le simulateur à
proprement dit. Le simulateur ordonnance le jeu de tâches contenu dans
une ou plusieurs files d'attente.
1. Récupération les fichiers test1.c et test2.c.
2. Les programmes ont été bien compilés et testés

Resultat1
Resutat2

Question 2 : Ordonnancement de type "temps partagé"

1. Modification la fonction faire_un_pas () du fichier simu_posix.c


2. les programmes test3.c et test4.c ci-dessus pour valider votre solution.
Resultat3

Resultat4
ManIpulatIon II. ordonnanceurs classIques
Question 1 : implantation de la politique SCHED_FIFO

Nous allons maintenant implanter un ordonnanceur POSIX.4


POSIX.4 offres un ordonnancement à priorités fixes. Ce type d'ordonnanceur affecte le
processeur à la tâche prête de plus haute priorité. POSIX.4 impose la présence d'au moins 32
niveaux de priorité (le niveau de priorité dont le numéro est le plus élevé correspond à celui
qui est le plus prioritaire)

Question 1 : implantation de la politique SCHED_FIFO


1) De modifier la fonction faire_un_pas() du fichier simu_posix.c pour que, si plusieurs
tâches de même priorité soient présentes dans le système, la politique SCHED_FIFO
soit appliquée. Seule la fonction faire_un_pas() est à modifier. La zone à modifier est
signalée par des étoiles.
2) Validation de la solution avec les programmes test5.c, test6.c et test7.c

Résultat
Résultat
Résultats
Question 2 : implantation de la politique SCHED_RR
1) De modifier la fonction faire_un_pas() du fichier simu_posix.c pour que cette fois-ci,
la tâche élue libère le processeur une fois le quantum expiré. Seule la fonction
faire_un_pas() est à modifier.

2) Validation de la solution avec les programmes test5.c, test6.c et test7.c


Résultat
Résultats
ManIpulatIon 3 : ordonnanceMent à prIorItés
fIxes et Méthode rM
L'application temps réel ciblée est une application embarquée dans un véhicule automobile
offrant des services de navigations.
1) Ordonnancement de l’application avec l’utilisation de la méthode RM (mode préemptif)

 Priorité
Tableau des taches et priorité
Tâche Si C Tache (ms) C Tache (ut) Pi=Di Priorité
GPS 0 80 8 600 (60 ut) 1
Gyroscope 0 60 6 100 (10ut) 3
Compteur roues 0 60 6 300 (30ut) 2

 Vérifions que l'application est ordonnançable


Pour RM (Liu et Layland), le jeu de tâche sera ordonnançable si le taux d’utilisation est
inférieur à 1 (utilisation d’un seul processeur)
n 1
Ci

i 1 Pi
 n(2 n  1)

n 1 1
Ci 8 6 6

i 1 Pi

60
 
10 30
 0.933 Et n(2 n  1)  3(2 3  1)  0.779

On a U>Un il faut donc tracer l’ordonnancement pour vérifier

 Dessinons l'ordonnancement généré sur la période d'étude


(Cheddar)

On constate que les échéances sont bien respectées l’application est donc ordonnançable par
RM
2) Compilons et testons le simulateur avec le jeu d'essais (test11.c et test12.c)

Résultat
Résultat

3) Complétons et compilons le programme vehicule.c avec la priorité 0 pour toute les


taches (ce qui, implicitement, leurs affectent la politique SCHED_OTHER).
4) Execution de l'application et l'ordonnancement généré
On peut constater que certaines contraintes temporelles ne sont pas respectées : la tâche
gyroscope manque l'échéance de sa 4ème activation.

5) Modifions le programme vehicule.c de sorte qu'à chaque tâche soit affectée la priorité
déterminée par Rate Monotonic définie précédemment.
Exécutez de l’application
Analyse et interprétation :
On remarque que l'ordonnancement généré est exactement le même que celui qui a été prévu
dans la question 1. Toutes les taches respectent leurs contraintes de temps c’est-à-dire leurs
échéances contrairement la question 4 ou les contraintes temporelles n’étaient pas respectées.
conclusIon
L’ordonnancement est une notion très indispensable dans divers domaines tel que les
systèmes embarqués, les véhicules automobiles… Dans ce TP, nous avons étudié un
ordonnanceur à priorité fixe et en particulier, celui présent dans le standard POSIX.4. À
travers ce TP, nous avons manipulé dans la première partie, des ordonnanceurs classiques
pour comprendre le fonctionnement du simulateur utilisé. Dans cette section, nous avons mis
l’accent sur l’ordonnancement de la plus haute priorité d’abord et par la suite, nous avons
traité le cas d’un ordonnanceur de rype temps partagé. Dans la deuxième manipulation ; nous
avons implanté un ordonnanceur POSIX.4 par deux politiques d’ordonnancement : la
politique SCHED_FIFO et celle SCHED_RR. Dans la dernière manipulation nous avons
étudié un ordonnancement à priorités fixes et méthode RM. Ce TP a été l’occasion pour nous
de comprendre encore plus, la gestion des tâches dans l’ensemble des systèmes à temps réel.