Ordonnancement dans
les systèmes temps réel
1999-2018
Zoubir Mammeri
Chapitre 1
1
1. Notions et caractéristiques des systèmes embarqués
Automatismes, Armements…
- Avionique (civil et militaire)
- Robotique
- Automobile
- Villes intelligentes
- Armement (chars, drones, soldats…)
2
Exemple typique de système embarqué
3
Exemple typique de système embarqué
ECU (Electronic Conrol Units)
4
Définitions
Principales caractéristiques
5
Besoins
Aspects à considérer
Défis à considérer
Hétérogénéité : Construire des systèmes complexes par intégration de
composants hétérogènes (mécanismes de communication, vitesse de
fonctionnement, granularité des calculs, variété des médias…)
6
Développement de système embarqué
En aucun cas, un OS classique ne garantit que les résultats seront obtenus pour une
date précise, surtout si ces résultats sont le fruit d'un traitement déclenché par un
événement EXTERIEUR (émission d'un signal par un périphérique quelconque,…)
7
Définitions
Définitions
1. « Intervalle de temps compatible avec le rythme réel d’arrivée des données et à
l’intérieur duquel un ordinateur peut effectuer les traitements nécessaires » Le
petit Robert.
2. Un résultat juste mais hors délai est un résultat faux.
8
Confusions/ambiguïtés
• Temps réel non strict = absence de contraintes FAUX
• Optimisation des temps de réponse Temps réel FAUX
FAUX
• Temps réel = rapidité
Durée d’exécution
Opération O1 30 10 8 11 14
Opération O2 7 10 11 5 4
Opération O3 8 10 11 11 3
Délai
moyen 15 10 10 9 7
Domaines d’applications
Télécommunications
Avionique et aérospatial
Domaine militaire
Multimédia et Web (téléconférences, télé-achat, …)
Domotique, Jeux
Médecine, Télé-médecine
Réalité virtuelle, Travail coopératif
Autres
9
Capteurs
Actionneurs
10
Systèmes
temps réel
Systèmes
et embarqués
Systèmes temps réel
embarqués
Systèmes embarqués Systèmes temps réel
UE Ordonnancement temps réel – Z. MAMMERI
21
Problèmes à résoudre
11
Systèmes mono-utilisateur monotâche
Complexité
Recherche
opérationnelle Théorie de
Robotique
files d’attente
Théorie de
contrôle
Traitement
Réseaux
de signal
Systèmes
répartis
Économie
Systèmes
Systèmes
Temps
Business d’exploitation
réel
Architecture
des ordinateurs
Sécurité
Langages de Actionneurs
Fiabilité Génie logiciel
programmation
IA
12
Intégration de technologies
Méthodes et outils
Programmation et
Middleware
Réseau
OS
SoC
3. Contraintes de temps
Différentes perceptions du temps réel (1/3)
Déterminer :
Echelle du temps : sec, ms, …
Intervalle minimal pour distinguer les événements
Durée de validité des événements et données
Temps de réponse aux stimuli
13
Différentes perceptions du temps réel (2/3)
Choisir :
Temps physique (horloge)
Algorithmes d’ordonnancement
14
Sources des contraintes de temps (1/2)
Origines externes
Caractéristiques physiques (vitesse, durée de réaction chimique, …)
Caractéristiques liées aux lois de commande du système physique
Origines internes
Choix de conception
• architecture centralisée ou répartie (données, traitements, contrôle)
• actions périodiques (avec les périodes adéquates) ou apériodiques
• choix d’une structure d’application (interface entre composants, …)
• autres
15
Expression des contraintes de temps (1/4)
Temps absolu
un instant (date)
Ex. La sirène doit sonner trois fois à midi le premier mercredi de chaque mois.
Temps relatif
Meets
Starts with
Overlaps
Equal
During
16
Expression des contraintes de temps (3/4)
Contraintes de production
Ex. Donner la position du mobile toutes les 10 secondes.
Contraintes de corrélation
Ex. Température et pression doivent être mesurées au maximum à 10 ms d’intervalle.
17
Quelques ordres de grandeur
Robotique en 10 ms
Systèmes vocaux en ms
Systèmes radar en ms
Contrôle moteur en s
Temps réel Rapidité
18
Utilité_résultat(t) Utilité_résultat(t) Utilité_résultat(t)
t t
Di
Prévisibilité (“predictability”)
Prévisibilité
- Absolue (garantie à 100%) connaissances statiques des contraintes
19
4. Architecture logicielle
N oyau tem ps réel
G estio n G e stio n
H o rlog e du de s
tem p s r éel tem p s é vén em en ts
P rim itive s
IT G e stio n
des O rd on n an ceu r
in ter ru p tion s
R e q uê te A ctiv atio n
T âch es utilisa te u r
T âch e i Tâ ch e j T âc he k
Inexistante
Créée Terminée
Prête Active
Bloquée
20
Ordonnancement dans l’OS
T â ch es u tilisateu r
T âch e i T âc h e j T âch e k
Dispatcheur
File d’attente 1 File d’attente i
21
Ordonnancement dans l’OS
– Sans priorité
22
OS temps réel
– Temps de préemption
(délai de sélection de la tâche à exécuter)
– Latence de l’ordonnancement
(délai entre la réception de l’IT et l’entrée dans la tâche de l’utilisateur)
23
Exemple de temps de réponse à un événement
t0 t1 t2 t3 t4 t5 t6
La tâche GetData mesure une température à La tâche Filter lit N mesures et les ignore et lit
partir de l’environnement et envoie la valeur ensuite la moyenne des mesures, multiplie cette
mesurée à la tâche Filter. moyenne par c (dont la valeur est lue à partir de
Une mesure est effectuée toutes les 10 ms. COEF) et envoie la valeur obtenue à
l’environnement via le port OUT.
Quand N mesures ont été effectuées, la moyenne
des N mesures est envoyée à Filter.
24
Exemple de tâches temps réel (2/2)
(en langage FlowC)
25
Chapitre 2
T2 T3
T1 R1 T4
Document de conception
T6 R2 T5
Ensemble de tâches
26
Contraintes de tâches (1/5)
individuelles
collectives
27
Charge-processeur d’une application TR
Ci
ui = Pi
: Pourcentage de l’activité du processeur dédiée à la tâche Ti
n
U= CP i
i
: Charge processeur = taux d’utilisation du processeur
pour les tâches périodiques
i=1
Demande de processeur
W (t )
C
i 1
i
28
Plus longue période d’activité du processeur
Cas de tâches périodiques
Pire cas = cas où toutes les tâches sont activables à l’instant t=0
Exemple de calcul de L
n
L0 = Ci 7 5 8 3 2 25
Ci Pi i 1
n
T1 7 20 25
L = W(L0 ) 1 Ci
1
i1 Pi
T2 5 20
(2 * 7) (2 * 5) (1* 8) (1* 3) (1* 2) 37
T3 8 30
n
T4 3 100
37
L2 = W(L1 ) 1 Ci 45
i 1 Pi
T5 2 100
n
45
L3 = W(L2 ) 1 Ci 57
i 1 Pi
n
57
L4 = W(L3 ) 1 Ci 57
i 1 Pi
29
Contraintes de tâches (3/5)
Modèle “complet” de tâche (contraintes individuelles)
Type de tâche (critique ou non)
Importance de tâche et Priorité de tâche
Autorisation de réquisition du processeur
Contraintes temporelles
Tâche périodique, sporadique ou apériodique
Période (Pi)
Instant d’arrivée (ri)
Fixe = ri
Dans un intervalle [rimin , rimax]
Cyclique = K*P + r0
Avec Offset (fixe ou dynamique)
Aléatoire
sporadique (Intervalle d’interarrivée minimal connu)
30
Contraintes de tâches (5/5)
Modèle “complet” de tâche (contraintes collectives)
Contraintes de répartition
r C(t) L(t)
t
t
r Cmax d
L = D - Cmax
UE Ordonnancement temps réel - Z. MAMMERI 62
31
Paramètres dynamiques de tâche (2/4)
L(t)
D =7, C = 2 et L(0) = 7 - 2 = 5
1
L0 : Exécution de la tâche
L(t+1) = L(t)
D(t+1)=D(t)-1
: Attente de la tâche
L(t+1) = L(t)-1
Fin tâche 2 D(t+1)=D(t)-1
D (t)
D
Dépassement échéance
Pi
Ci,k Ci,k+1
32
Paramètres dynamiques de tâche (4/4)
Problème : Il y a très peu de conditions de faisabilité pour répondre aux besoins réels.
Recherche active pour trouver des CF.
33
2. Classes d’algorithmes d’ordonnancement
34
Critères de classification des algorithmes (1/3)
Si on diminue la demande
processeur, l’application reste
Stable ordonnançable. Instable
35
Critères de classification des algorithmes (3/3)
Monoprocesseur Multiprocesseur
Complexité
Tolérance aux fautes
Critère optimisé
Nombre de tâches ne respectant pas les CT
Longueur de l'ordonnancement
Charge de communication
Autre
36
Autres critères de classification des algorithmes (2/2)
Technique utilisée
Recuit simulé
Algorithmes génétiques
Réseaux de neurones
Logique floue
Autre
Algorithme en O(f(n)) :
* O(log(n)) : logarithmique
* O(n) : linéaire
* O(nk) : polynomial
* O(kn) : exponentiel
Problème non polynomial (NP) : problème ne pouvant pas être résolu en un temps polynomial
Classe NP : ensemble des problèmes NP
37
Quelques propriétés des problèmes
Récapitulatif
38
Récapitulatif (suite)
Chapitre 3
Ordonnancement de tâches indépendantes
39
1. Principaux algorithmes d’ordonnancement de
tâches périodiques indépendantes
A priorités statiques
Rate Monotonic : fondé sur les périodes
Deadline Monotonic : fondé sur les délais critiques
A priorités dynamiques
Earliest Deadline First (EDF) : fondé sur les échéances
Least Laxity First (LLF) : fondé sur la marge de manœuvre restante
40
RM : exemple 1
r1 = r2 = 0 D1 = P1 = 6 D2 = P2 = 9
C1 = 2 C2 = 3
T1
T2
0 2 56 8 9 12 14 16 18
RM : exemple 2
r1 = r2 = r3 = 0 D1 = P1 = 6 D2 = P2 = 9 D3 = P3 = 18
C1 = 2 C2 = 3 C3 = 4
T1
T2
T3
0 2 5 6 8 9 12 14 16 18
41
Condition nécessaire et suffisante
Théorème de Lehoczky, Sha et Ding 1987
1 i mP
i , 1 i n , min
( k ,m )Ri mPk
j 1
Cj k
Pj
1
avec :
P
Ri ( k , m ) 1 k i , m 1,..., i
Pk
Les indices des tâches son dans l’ordre croissant des périodes : P1 ≤ P2 ≤ …. ≤ Pn
3
Exemple de configuration Ci 1
Tâche Pi Ci r0
P
i 1 i
3(2 3 1 )
T1 5 2 0 1
3 Ci 2 2 4
T2 10 2 0 0.8 3(2 3 1) 0.779
i 1 Pi 5 10 20
T3 20 4 0
CS de Liu non satisfaite
P
R1 ( k , m ) 1 k 1,m 1,..., 1 ( 1,1 )
Pk
1 1 mP
i 1, min
( k ,m )R1 mP1
j 1
C j k 1
Pj
1 P C 2
C1 1 1 1 T1 est ordonnançable
P1 P1 P1 5
42
Exemple d’utilisation de la condition NS du Théorème de Lehoczky et al. (2/3)
1 2 mPk
i 2 , min
( k ,m )R2 mPk
C j 1
j 1
Pj
2 P1
1 C1 P1 C2 P1 C1 C 2 4 T2 est ordonnançable
( 1,1 )
P1 C P P
j 1
j
j
1 P1
1
P1 P2 P1 P1 5
1 2 2P 1 2 P1 2 P1 2C1 C2 6
(1,2) Cj
1
C1 C2 1 T2 est ordonnançable
2 P1 j 1 Pj 2 P1 P1 P2 2 P1 10
2 P2 1 P2
1 C1 C 2 P2 2C1 C 2 6 1 T2 est ordonnançable
( 2,1 )
P2 C
j 1
j
Pj P2 P1
P2 P2 10
P
R3 ( k , m ) 1 k 3 , m 1,..., 3 ( 1,1 ),( 1,2 ),( 1,3 ),( 1,4 ),( 2 ,1 ),( 2 ,2 ),( 3 ,1 )
Pk
3 P1 C1 P1 C 2
1 P1 C 3 P1 C1 C 2 C3 8 On ne peut pas
( 1,1 )
P1 C
j 1
j
Pj P1 P1 P1
P2 P1
1
P3 P1 P1 P1 5 conclure encore
3 2 P1 C1 2 P1 C 2 2 P1 C 3 2 P1 2C1 C 2
1 C 10
( 1,2 )
2 P1 C P
j 1
j
j
3
2 P1 P1 2 P1 P2 2 P1 P3 2 P1 2 P1 2 P1 10
1 T3 est ordonnançable
43
Deadline Monotonic (Leung et Whitehead 1982)
n
C 1
CS :
Dii n(2 n
1)
i 1
RM et DM : exemple
r1 = r2 = 0 D1 = P1 = 2 D2 = 1 P2 = 3
C1 = 1 C2 = 1
T1 T1
T2 T2
1 2 3 4 5 6 1 2 3 4 5 6 7
RM DM
44
Condition nécessaire et suffisante (condition du temps de réponse)
Théorème de Audsley et al. 1993
R i 1
i ,1 i n ,R i Ci i C j Di
j 1 Pj
R1 = C1
2
Exemple de configuration Ci 1
Tâche Pi Ci Di
D
i 1 i
2(2 2 1 )
T1 12 3 8 2 1
Ci 3 6
T2 20 6 10 D
i 1 i
8 10
0.975 2( 2 2 1 ) 0.83
i 1 R1 C1 3 Di 8
1 R2 R
i 2 R 2 C2 P C
j 1 j
j C 2 C1 2 D2
P1
R20 0
R0 T1 et T2 sont ordonnançables
R21 C2 C1 2 C2 6
P1
R1 6
R22 C2 C1 2 6 3 9
P1 12
R2 9
R23 C2 C1 2 6 3 9 10
P1 12
UE Ordonnancement temps réel - Z. MAMMERI
90
45
Calcul du temps de réponse maximum de tâche périodique à priorité fixe
Cas préemptif (cas synchrone i.e. k, rk = 0)
Une tâche plus prioritaire hpi : ensemble de tâches plus prioritaires que la tâche Ti
Cas Di ≤ Pi peut retarder Ti jusqu’à spi : ensemble de tâches de même priorité que la tâche Ti
la fin de son exécution Tri(t) : temps de réponse de la tâche Ti devenue activable à t
hpi spi
Ti
0 TRi,1(t)
t TRi,2(t) TRi,3(t)
Wi(t) : fin d’exécution de Ti
EDF est optimal pour les systèmes de tâches indépendantes (pour Pi = Di)
46
EDF : exemple
r1 = r2 = 0 D1 = P1 = 5 D2 = P2 = 3
C1 = 3 C2 = 1
T1
T2
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
n
t Di
t 0, t 1 Ci
i 1 Pi
47
Least Laxity First (Sorenson 1974)
ri di = ri + Di
Ci(t) Li(t)
t
Même capacité d’ordonnancement que EDF
Plus équitable que EDF (utile en cas d’allocation équitable)
Défaut : Nombre élevé de changements de contexte
Recalcul des priorités toutes les unités de temps
UE Ordonnancement temps réel - Z. MAMMERI
95
r1 = r2 = 0 D1 = P1 = 8 D2 = P2 = 6
C1 = 4 C2 = 3
T1
T2
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
48
EDF et LLF : exemple 1 (2/2)
r1 = r2 = 0 D1 = P1 = 8 D2 = P2 = 6
C1 = 4 C2 = 3
Laxité 4 3 2 2 2 1 1 4 3 2 2 2 2 4 3 3 3 2 1 1
T1
Laxité 3 3 3 2 1 3 2 2 2 3 2 1 1 1 3 2 2 2 1 0
T2
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
r1 = 0, D1 = 9, P1 = 9, C1 = 3 r2 = 0, D2 = 9, P2 = 9, C2 = 3
r3 = 0, D3 = 9, P3 = 9, C3 = 3
Laxité 6 6 5 4 3 3 2 1 6 6 5 4 3 3 2 1
T1
Laxité 6 5 5 4 3 2 2 6 5 5 4 3 2 2
T2
Laxité 6 5 4 4 4 3 2 1 0 6 5 4 4 4 3 2 1 0
T3
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Séquence EDF
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
49
2. Ordonnancement de tâches
apériodiques indépendantes
Tâches non critiques : acceptation dans les temps creux d’une séquence rigide
de tâches (utilisation de test d’acceptation)
Pas d’échéance
Tapi(ri, Ci)
Transfert d’image
Optimiser le temps de réponse
50
Types de serveurs de tâches apériodiques
• serveur à scrutation
• serveur ajournable
• serveur sporadique
• autres
rejet
Serveur A
Descrp. Autres
tâches Serveur Z
apériodiques
Arrière
plan
51
Traitement en arrière plan
File d'attente
de priorité élevée
Tâches RM, DM, ...
périodiques
Processeur
Tâches
apériodiques FIFO ou priorité
File d'attente
de priorité faible
Temps creux
0 9 10 14 20
Tâches apériodiques
0 8 9 10 14 18 20
T4 (r =12, C=3)
T3 (r =8, C=2)
52
Serveur à scrutation (Polling server)
(Lehoczky, Sha et Strosnider 1987)
Une tâche périodique spécifique, appelée serveur, est dédiée aux traitements
des requêtes apériodiques.
Le serveur à scrutation traite les tâches apériodiques qu'il trouve en attente lors
de son activation.
Tâches apériodiques
TS (r0=0, C=2, P=5)
(Service FIFO) 5 7 10 11
0 15 20
2
Capacité du serveur
0 5 8 10 15
20
53
Test de garantie de tâches apériodiques
en cas d’utilisation de Serveur à scrutation
Une tâche apériodique (quand elle est seule) peut attendre Ps au plus
avant de s’exécuter
Ca
Condition suffisante : Si Ca est quelconque alors garantie si Ps
C 1 Da
s
Ca ra
Ps Ca Ca Cs ra Da
C
s Ps Cs
54
Serveur ajournable (deferrable server)
(Lehoczky, Sha et Strosnider 1987)
Une tâche périodique spécifique, appelée serveur, est dédiée aux traitements
des requêtes apériodiques.
Le serveur ajournable traite les tâches apériodiques qu'il trouve en attente lors
de son activation.
Si une requête apériodique arrive alors que le serveur ajournable est suspendu, elle
est exécutée si la capacité du serveur n’est pas nulle (d’où violation du principe de RM)
En début de période, la capacité du serveur est remise dans son état initial
indépendamment de la capacité précédemment consommée.
TS (0,2,4,4)
2
Capacité TS 1 t
5 10 15 20
T2(3,1) T3(6,3) T4(13,1) T5(15,2)
arrivée t
Tapériodiques
5 10 15 20
Traitement t
Tapériodiques
5 10 15 20
t
T1 (0,1,3,3)
6 9 12 15 18 20
55
Test de garantie de tâches apériodiques
en cas d’utilisation de Serveur ajournable
Ps : période du serveur Cs (t) : capacité du serveur à l’instant t
Cas d’une seule tâche apériodique et serveur avec la plus haute priorité
Une tâche apériodique peut s’exécuter dès qu’elle arrive si Cs (ra) > 0
ra Ca ra Da Si Ca Cs (ra )
Ca a ra
Ps Ca a Ca a C s ra Da Sinon
Cs Ps Cs
r
a min Cs ( ra ), a Ps ra
P
s
UE Ordonnancement temps réel - Z. MAMMERI
111
56
Fonctionnement d’un serveur sporadique simple
(avec priorités fixes)
PRexe : priorité de la tâche en cours d’exécution.
PRs : priorité du serveur sporadique.
Ps : période du serveur sporadique. Cs : capacité maximale du serveur sporadique.
RT : instant où aura lieu le réapprovisionnement de la capacité du SS.
RA :quantité de réapprovisionnement qui sera rajoutée à la capacité du SS.
Actif : le SS est dit actif quand PRexe PRs . (SS actif ne signifie pas qu’il consomme du temps CPU)
Inactif : le SS est dit inactif quand PRexe < PRs .
Quand une tâche apériodique arrive, elle s’exécute si la capacité du serveur n’est pas nulle et si
la priorité du serveur le permet (les tâches apériodiques s’exécutent avec le même niveau de
priorité que le serveur sporadique).
Règle de réapprovisionnement de la capacité du serveur sporadique
A l’initialisation, la capacité du SS est approvisionnée avec la valeur maximale Cs.
L’instant de réapprovisionnement RT est fixé dès le moment où le SS devient activable et Cs > 0
(soit ta ce moment). La valeur de RT est fixé à ta + Ps.
La quantité de réapprovisionnement, RA, à effectuer à l’instant RT est fixée au moment où le SS
devient inactif ou quand sa capacité est épuisée (soit t1 ce moment). La valeur de RA est fixée à
une quantité égale à celle consommée durant l’intervalle [ta, t1].
T1 t
(C=1, P=5)
5 10 15 20
T2
t
(C=4, P=15)
5 10 15 20
C=2 C=2
Tâches t
apériodiques
5 10 15 20
Serveur t
actif
ta1 ta2 5 t12 10 15 20
Cs(t) t11
5
4 RA3 = 2
3
RA1 = 0 (rien n’a 2 RA2 = 2
été consommé 1 t
RT1 RT2 RT3
dans [0, 1]
0
5 10 15 20
57
Serveur sporadique avec RM : exemple (2/2)
Pour les systèmes dirigés par les délais (ex. EDF ou LLF)
Principe de fonctionnement :
lorsqu’une tâche apériodique est activée, le système recule au maximum l’instant de
déclenchement des tâches périodiques pour autant qu’elles continuent à respecter
leurs contraintes temporelles.
Quand EDF est utilisé, on calcule pour chaque tâche apériodique une échéance fictive
df qui est celle qu’il faut lui associer pour qu’elle soit exécutée avec un temps de
réponse minimal. df correspond alors à la première date pour laquelle le temps
d’exécution de la tâche est égal au temps total d’inactivité du processeur
quand l’ordonnancement respecte les échéances de toutes les tâches périodiques
et des tâches apériodiques précédemment déclenchées et non encore achevées.
58
Slack-stealing avec EDF : exemple (1/2)
t
0 2 4 5 6 8 9 10 11 13 14 15 16 18 19 20
t
0 2 3 8 10 15 16 18 20
Tâches apériodiques
df 3 df 4 df 5
t
0 4 6 10 11 13 15 20
- La tâche T3 peut donc s’exécuter immédiatement entre t=4 et t=6 et sa date d’échéance fictive df3
est alors égale à 6.
- De la même façon, la troisième requête de la tâche T1 peut reculer le début de son exécution
jusqu’à t=11 de façon à laisser la tâche T4 s’exécuter immédiatement suite à leur réveil.
La tâche T4 a donc une échéance fictive fixée à df4 =11.
- La tâche T5 obtient une échéance fictive df5 =15 et s’exécute après la fin de la troisième requête
de T1 (c’est-à-dire dans l’intervalle [13,15]).
59
Comparaison des algorithmes de traitement de tâches apériodiques
Serveur à scrutation
Serveur ajournable
Serveur sporadique
Slack-Stealer
60
Chapitre 4
Synchronisation
61
réception
émission
2 tâches de
réception même période
émission émission
réception
Graphe de
précédence
Précédence et RM
r1 = 1 r2 = 0 r3 = 0 r4 = 0 r5 = 0
D1 = P1 = 8 D2 = P2 = 8 D3 = P3 = 12 D4 = P4 = 12 D5 = P5 = 8
C1 = 1 C2 = 2 C3 = 2 C4 = 2 C5 = 2
T5
T1 T3 T4
T2
*
r1 = 1 r2* =1 r3* = 0 r4* = 0 r5* = 1
Prio4 < Prio3 < Prio2 < Prio5 < Prio1
UE Ordonnancement temps réel - Z. MAMMERI 124
62
Exemple RM et précédence
r 1* = 1 r 2* = 1 r3 = 0 r4 = 0 r 5* = 1
D1 = P1 = 8 D2 = P2 = 8 D3 = P3 = 12 D4 = P4 = 12 D5 = P5 = 8
C1 = 1 C2 = 2 C3 = 2 C4 = 2 C5 = 2
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
Précédence et EDF
T1 T2 T3
C1 C3
t
r1 r2 r*2 d*2 d2 d3
63
Exemple EDF et précédence
Paramètres Paramètres
des tâches transformés
T3
Tâche ri Ci di r*i d*i
T T5 T1 0 1 5 0 3
1
T2 5 2 7 5 7
T4
T3 0 2 5 1 5
T2
T4 0 1 10 7 9
T5 0 3 12 8 12
Difficultés :
• Interblocages
• Inversion de priorités
• Instabilité des algorithmes
E/S Réseau
64
C = Ca + Cb + Cg
Ca Cb Cg
t
Utilisation ressource
(1 section critique)
Utilisation
1 ressource Utilisation Utilisation
1 ressource 1 ressource
Utilisation
1 ressource Utilisation Utilisation
3 ressources 2 ressources
Interblocage
Demande
de ressource
R1 R2
T1 R1 R1
R2 R1
R2
T2
Interblocage
65
Inversion de priorité
Libération
Prio3 < Prio2 < Prio1 de ressource
R
T3 R R R
R
T2
R
T1
R
Durée de blocage
r1 = r2 = r3 = 0 D1 = P1 = 16 D2 = 2 P2 = 8 D3 = 15 P3 = 16
C1 = 6 C2 = 2 C3 = 6
R
T1 R
T2 R R
T3
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
66
Instabilité de EDF (2/2)
r1 = r2 = r3 = 0 D1 = P1 = 16 D2 = 2 P2 = 8 D3 = 15 P3 = 16
C1 = 6 C2 = 2 C3 = 5
T1 R
T2 R R
T3
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Principe
La tâche Ti qui possède une ressource critique
prend une priorité égale au Max{Prioi, Priok | Tk en
attente de la section critique}.
67
Protocole à priorité héritée PIP
Reprend Prio3
Hérite de Prio1
R
T3 R R R
T2
R
T1 R
Blocage R
Prio3 < Prio2 < Prio1
Propriétés de PIP
Durée de blocage maxi de n’importe quelle tâche ordonnancée avec PIP
Min(nb_tâches, nb_ressources) * pire_durée_SC
B n C C Bi k i 1 Ck
max i k n(21 / n 1) i 1,2,...,n i 1
i 1,..,n Pi k 1 Pk D k 1 Dk
i
68
Protocole à priorité plafond : PCP (Priority Ceiling Protocol)
(Sha, Rajkumar et Lehoczky 1990)
Principe
Chaque ressource Rx possède une priorité plafond égale à
Max{Priok | Tk pouvant accéder à Rx}.
On note s le maximum des priorités plafonds des ressources en cours
d’utilisation par des tâches. s est égal à une valeur inférieure à
la priorité la plus basse quand aucune ressource n’est utilisée.
Quand une tâche Ti veut accéder à une ressource Rx qui est libre :
- Cas 1 : si Prioi est supérieur à s, alors Ti obtient Rx et s est mis à jour.
- Cas 2 : si Prioi n’est pas supérieur à s, alors Ti obtient Rx seulement si Ti est
la tâche qui détient la (ou les) ressource(s) dont le plafond est égal à s.
- Autres cas : Ti est bloquée.
Une tâche Ti qui est en SC prend la priorité
Prio = Max{Prioi, Priok| Tk en attente de SC}. En d’autres termes, si une tâche
Ti bloque une tâche Tj, Ti hérite de Prioj si Prioj > Prioi.
Quand Ti sort de la SC, elle reprend la priorité quelle avait avant d’entrer en SC.
T1 T2 R2 T4 T3
R1
R3
69
Exemple de fonctionnement de PCP (2/4)
T1
R2
Plafond(R3) = Prio2 => requête refusée
T2
T3
R3 Hérite de Prio2
T4 R3 R3
R1
Plafond(R3) = Prio2 < Prio1
T1 R1
R2 R1
T2
T3
Prio2 > Prio3
Hérite de Prio2 R2 Pas de ressource allouée
R3 à d’autres tâches
R3 R2
T4 R3 R
3
R3 R3
R2 R3
Prio4 < Prio3 < Prio2 < Prio1
Plafond(R1) = Prio1 Plafond(R2) = Prio2 Plafond(R3) = Prio2
70
Exemple de fonctionnement de PCP (4/4)
R1
Plafond(R3) = Prio2 < Prio1
T1 R1
R2 R1 R3
T2 R2 R3 R2 R2
R2
R3
T3
Prio2 > Prio3
R3 Hérite de Prio2 R2 Reprend sa Prio4
R3 R2
T4 R3 R
3
R3 R3
R2 R3
Prio4 < Prio3 < Prio2 < Prio1
Plafond(R1) = Prio1 Plafond(R2) = Prio2 Plafond(R3) = Prio2
Propriétés de PCP
Utilisable pour les ressources mono exemplaires
i n C Bi
i
1
i 1 Pi
Bi : temps maxi de blocage de la tâche T en attente de SC.
i
Dans la CS, les tâches sont ordonnées selon l’ordre croissant des Di
71
Protocole à priorité à pile : SRP
(Stack Resource Policy) - (Backer 1991)
Principe
Chaque tâche Ti est caractérisée par une priorité Prioi (statique ou dynamique)
et un niveau de préemption i (statique).
i se calcule à partir de paramètres tels que Di, Ci, Importancei ...
Ti ne peut préempter Tk que si i > k
s = Max[Cx x=1, …, m ]
s est initialisé à 0 et modifié à chaque acquisition/libération de ressource.
Test de préemption : Si la condition « Ti est la plus prioritaire des tâches prêtes et
i > s » est vraie Ti est exécutée, sinon elle reste dans la file des tâches prêtes. Cette
condition est testée à chaque fois que s décroît (c-à-d, quand une ressource est libérée).
72
Exemple SRP (1/5)
T1 : T2 : T3 :
demande(1, R3) demande(3, R3) demande(1, R2)
… … …
demande(1, R1) demande(1, R2) demande(3, R1)
… … …
libère (1, R1) libère (1, R2) libère (3, R1)
... … ...
libère(1, R3) libère (3, R3) libère(1, R2)
… ...
demande(2, R1) demande(1, R3)
... ...
libère(2, R1) libère(1, R3)
r1=2, D1=9, 1=3 r2=1, D2=16, 2=2 r3=0, D3=20, 3=1
T1 9 3 1 0 1 R1 0 1 2 3
T2 16 2 2 1 3 R2 - - 0 2
T3 20 1 3 1 1 R3 0 2 2 3
C’est un tableau
statique utilisé
par le Test de
Lorsque 2 exemplaires de R1 sont libres, la seule tâche qui pourrait être préemption
bloquée est T3, car elle exige 3 exemplaires de R1. Par conséquent C1(2) =
Max[0, 3] = 1.
Lorsque aucun exemplaire de R1 n’est libre, toutes
les trois tâches pourraient être bloquées.
Lorsque 1 exemplaire de R1 est libre, les tâches qui pourraient être Par conséquent C1(0) = Max[0, 1, 2, 3] = 3.
bloquées sont T2 et T3, car elles exigent chacune plus d’un
exemplaire de R1. Par conséquent C1(1) = Max[0, 2, 3] = 2.
73
Exemple SRP + EDF (3/5)
T1
T2 est bloquée par le TP
T3 entre dans sa première SC, s passe à 2, car T2 peut
T2 se bloquer sur R2 (le seul exemplaire de R2 est pris)
T3 entre dans sa deuxième SC, s passe à 3, car T1 peut
se bloquer sur R1 (les trois exemplaires de R1 sont pris)
R2 R1
T3
3
s 2
1
0
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
D1 = 9, 1 = 3 D2 = 16, 2 = 2 D3 = 20, 3 = 1
T1 se termine
R3 R1 R3 T3 reprend son exécution
T1
T3 libère R1, s passe à 2,
T1 préempt T3
T2
T3 libère R2, s passe à 0
(car toutes les ressources sont libres)
R2 R1 R2
T3 T2 préempt T3
3
s 2
1
0
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
D1 = 9, 1 = 3 D2 = 16, 2 = 2 D3 = 20, 3 = 1
74
Exemple SRP + EDF (5/5)
Toutes les ressources sont libres
T2 n’est plus interrompue
(2 > 3 ) Toutes les ressources
R3 R3
sont libres
R1
T1
R3 R3 R1
T2 R2
Les 3 exempl.
R2 R1 R2 de R3 sont pris R3
T3
3
s 2
1
0
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
D1 = 9, 1 = 3 D2 = 16, 2 = 2 D3 = 20, 3 = 1
Propriétés de SRP
i k C B
k 12n i
k 1
Di Dk
i1
Bi : temps maxi de blocage de la tâche Ti en attente de SC.
Dans la CS, les tâches sont ordonnées selon l’ordre croissant des Di
75
Comparaison des principaux protocoles de gestion de ressources
Au
Protocole à priorité plafond Oui Oui 1 Facile Moment
(Priority Ceiling Protocol) de l’accès
- Dans le cas de 2 processeurs ou plus, aucun ordonnancement fondé sur les délais
(comme EDF par exemple) ne peut être optimal sans connaissances a priori des
délais, des temps d’exécution et des instants de réveil.
76
Anomalies de l’ordonnancement
- Ne pas se fier à ce qui semble ‘naturel’/’évident’.
- De nombreux types d’anomalies sont publiés.
- Exemple : cas de l’ordonnancement non préemptif à priorité fixe
Ci Pi Ci Pi
T1 1 3 T1 1 3
T2 2 6 T2 1 6
T3 4 12 T3 4 12
T1 T1
T2 T2
T3 T3
0 2 5 6 9 12 0 2 5 6 9 12
Tâches indépendantes
Tâches Création
apériodiques de serveurs
Algorithmes
d'ordonnancement
permettant la validation
Tâches Modification (RM, DM, EDF, LLF)
avec précédence paramètres
77
Conclusion sur l’ordonnancement de tâches (2)
Application des techniques approchées (algo génétiques, réseaux de neurones, logique floue …)
Chapitre 5
Exemple d’application
78
Exemple d’application
Exploration de Mars
Mission Pathfinder de la NASA
Après une analyse détaillée du problème et une série de tests sur terre, un
phénomène d’inversion de priorité a été identifié comme cause de l’erreur.
Le code résidant sur la sonde a été modifié (en intégrant un protocole
d’héritage de priorité) et a été téléchargé.
Architecture matérielle
caméra radio
Sonde Pathfinder
bus VME
Interface bus
bus 1553
79
Architecture logicielle
Durée d’exécution
variable
U = 72% si CTache_Meteo = 50
U = 72,5% si CTache_Meteo = 75 < 7(21/7 - 1) Ordonnançable avec RM
80
Toutes les tâches sont périodiques et activées par l’horloge temps réel interne (HTR).
Elles partagent une ressource critique commune, appelée TAMPON_DONNEES
HTR HTR
commandes
HTR
HTR
Tache_pilotage Tampon_donnees
Tache_camera
LIRE
HTR
ECRIRE
images commande
caméra Tache_mesures
HTR
HTR
Tache_radio Tache_meteo
réception émission
Deux tâches vont permettre de réguler le transfert des données sur ce bus :
Tâche ORDO_BUS
cette tâche, qui possède la priorité la plus haute, vérifie que le transfert
de données a été correctement effectué et prépare le nouveau cycle de transfert.
Si le transfert ne respecte pas les échéances, une alarme est générée (conduisant
à une réinitialisation du système).
Tâche DISTRIBUTION_DONNEES
cette tâche, qui possède la troisième priorité la plus haute collecte l’ensemble
des dernières données fournies par les différents éléments connectés sur
le bus et place ensuite ces données dans la mémoire tampon TAMPON_DONNEES
accessible aux autres tâches de l’application.
81
Hypothèses d’exécution des tâches
R R
DISTRIBUTION_DONNEES R R R R R R R R
t
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
TACHE_PILOTAGER R
R
R R R
t
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
TACHE_RADIO
inversion de priorité
t
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
TACHE_CAMERA
inversion de priorité
t
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
TACHE_MESURES R R
t
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
TACHE_METEO R R
t
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
R R
Unité de temps = 25 ms : Tâche sans ressource : Tâche avec ressource Demande ressource Libération ressource
82
Diagramme d'exécution des tâches pour CTache_Meteo = 3 Séquence
invalide
ORDO_BUS Alarme Réinitialisation du système
t
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
R R
DISTRIBUTION_DONNEES R R La tâche rate son échéance
? t
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
R
TACHE_PILOTAGE R
t
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
TACHE_MESURES R R
t
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
TACHE_METEO R R
t
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
R R
DI STRIBUTION_DONNEES R R R R R R R R
t
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
R
TA CHE_PILOTAGE R R R R R
t
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
TA CHE_RADIO
t
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
TA CHE_CAMERA
t
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
TA CHE_MESURES R R
t
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
83
Explication
Pathfinder contained an "information bus", which you can think of as a shared memory area used for passing
information between different components of the spacecraft. A bus management task ran frequently with high
priority to move certain kinds of data in and out of the information bus. Access to the bus was synchronized with
mutual exclusion locks (mutexes).
The meteorological data gathering task ran as an infrequent, low priority thread, and used the information bus
to publish its data. When publishing its data, it would acquire a mutex, do writes to the bus, and release the
mutex. If an interrupt caused the information bus thread to be scheduled while this mutex was held, and if the
information bus thread then attempted to acquire this same mutex in order to retrieve published data, this
would cause it to block on the mutex, waiting until the meteorological thread released the mutex before it could
continue. The spacecraft also contained a communications task that ran with medium priority.
Most of the time this combination worked fine. However, very infrequently it was possible for an interrupt to
occur that caused the (medium priority) communications task to be scheduled during the short interval while
the (high priority) information bus thread was blocked waiting for the (low priority) meteorological data thread.
In this case, the long-running communications task, having higher priority than the meteorological task, would
prevent it from running, consequently preventing the blocked information bus task from running. After some
time had passed, a watchdog timer would go off, notice that the data bus task had not been executed for some
time, conclude that something had gone drastically wrong, and initiate a total system reset.
This scenario is a classic case of priority inversion
Chapitre 6
UE OSTRE – Z. MAMMERI
168
84
Introduction
Ensemble de Analyse
ressources d’ordonnançabilité
Algorithme
d’ordonnancement
UE OSTRE – Z. MAMMERI
169
UE OSTRE – Z. MAMMERI
170
85
Facteurs d’influence
Void f(int a)
i=1
{for (i=1;i<100;i++)
t1
{BlocX;
if (a==10) BlocY; else BlocZ; BlocX
}
t2
a==10
t3 t4
Chemins d’exécution dépendent de :
t8
- Structure du programme t5 t6
- Valeurs d’entrée BlocY BlocZ
i=++
Durée d’exécution des instructions t7
dépend de :
i>=100
- Vitesse du processeur
t9
- Parallélisme, cache…
UE OSTRE – Z. MAMMERI
171
Méthodes dynamiques
Détermination des jeux d’essai
- Manuelle, générateurs aléatoires, techniques avancées
Exécution réelle sur la cible
Mesure du pire cas
Risques
- Pas sûr de trouver le WCET à cause de la non-couverture des jeux d’essai
- Explosion du nombre de jeux de test
UE OSTRE – Z. MAMMERI
172
86
Méthodes statiques
Représentation
de flot
Compilateur
UE OSTRE – Z. MAMMERI
173
Chemins avec
boucles bornées
Chemins autorisés
(enlever chemins infaisables,
mutuellement exclusifs)
Effectivement
faisables
Très probables
UE OSTRE – Z. MAMMERI
174
87
Analyse de flot (2/3)
Chemins infaisables
UE OSTRE – Z. MAMMERI
175
UE OSTRE – Z. MAMMERI
176
88
Méthode à base d’arbre pour le calcul du WCET (1/2)
BB1 Seq2
Principe
If BB5
– Détermination du temps d’exécution de chaque bloc de base
– Calcul du WCET par analyse de bas en haut de l’arbre
BB2 BB3 BB4
UE OSTRE – Z. MAMMERI
177
...
Seq1
UE OSTRE – Z. MAMMERI
178
89
Difficultés logicielles de calcul du WCET
UE OSTRE – Z. MAMMERI
179
Processeurs simples
– Temps d'exécution d'une instruction dépend uniquement de son type et de ses
opérandes
– Pas de recouvrement entre instructions, pas de hiérarchie de mémoire
Processeurs complexes
– Effets locaux
• Recouvrement entre instructions (notion de pipeline)
– Effets globaux
• Caches de données,
• Caches d'instructions,
• Prédicteurs de branchement
• …
UE OSTRE – Z. MAMMERI
180
90
Exemple de surdimensionnement du WCET
(projet Heptane-IRISA)
UE OSTRE – Z. MAMMERI
181
Chapitre 7
Validation d’applications temps réel
91
1. Eléments de description d’applications TR
2. Validation
Objectif
Démontrer/montrer par une procédure de preuve, de simulation ou de test que les
choses sont « bonnes/correctes/cohérentes ».
1. Vérifier que les CT sont compatibles (cohérentes) avec le cahier des charges et
que les CT des différents composants (tâches/messages) sont cohérentes entre elles
2. Vérifier que tout composant peut respecter ses CT s’il exécute seul et qu’il a
toutes les ressources requises (ordonnançabilité individuelle)
92
Analyse d’ordonnançabilité
Simulation
93
3. Outils pour l’analyse d’ordonnançabilité
PERTS
Conception Compilateur
d'application
Description Description
Description Outil d'analyse
abstraite concrète
de ressources des paramètres
des tâches des tâches
temporels
Générateur de charge
Analyseur
d'ordonnançabilité
Outil de mesure
du temps d'exécution
Plate-forme
94
UE Ordonnancement temps réel – Z. MAMMERI 189
95
UE Ordonnancement temps réel – Z. MAMMERI 191
96
4. Conclusion
Développer des outils d’aide au choix des algorithmes selon le profil considéré
Ouvrages
Burns A., Wellings A., Real-time systems and programming languages. Addison-Wesley 1997.
Cottet F., J. Delacroix J., Kaiser C. et Mammeri Z., Ordonnancement temps réel, Hermès 2000.
Kopetz K., Real-Time Systems. Design Principles for Distributed Embedded Applications.
Kluwer Academic Publishers 1997
Stankovic J.A., Spuri M., Ramamritham K., Buttazzo G. Deadline Scheduling for Real-Time Systems. EDF
and related Algorithms. Kluwer Academic Publishers 1998
97
Articles
Agrawal G. et al., “Local synchronous capacity allocation schemes for guaranteeing messages deadlines with
the timed token protocol”, Proceedings of INFOCOM’93, San Francisco (1993), p. 186-193.
Aras C., Kurose J.F., Reeves D.S., and Schulzrinne H., “Real-time communication in packet switched networks”, Proceedings of
the IEEE, vol. 82, n° 1, p. 122- 139, 1994.
Cardeira C. et Mammeri Z., “Ordonnancement de tâches dans les systèmes temps réel répartis” ,
RAIRO-APII, vol. 28, 4, p. 353-384, 1994.
A. Colin et al., Calcul de majorants de pires temps d’exécution: état de l’art. Revue Technique et Science Informatiques, Numéro
spécial Temps-réel, 2003.
Cottet F., J. Delacroix J., Kaiser C. et Mammeri Z., “Ordonnancement temps réel – Ordonnancement centralisé”, Collection
Techniques de l’ingénieur, Traité Mesures et contrôle, Article R8055, 1999.
Cottet F., J. Delacroix J., Kaiser C. et Mammeri Z., “Ordonnancement temps réel – Ordonnancement réparti”,
Collection Techniques de l’ingénieur, Traité Mesures et contrôle, Article R8056, 2000.
Malcolm N., and Zhao W., “Hard real-time communication in multiple-access networks”,
Journal of Real-Time Systems (8): 35-77, 1995.
Y. Manabe, S. Aoyagi, “ A feasibility decision algorithm for rate monotonic and deadline monotonic
scheduling”, Journal of Real-Time Systems, 14(2):171-181, 1998
I. Ripoli, A. Crespo, A. Mok, “Improvement in fesability testing for real-time tasks”, Journal of Real-Time Systems, 11(1):19-39,
1996.
Sha L., Rajkumar R., and Lehoczky J.P., “Priority inheritance protocols: An approach to real-time
synchronisation”, IEEE Transactions on Computers, vol. 39, n° 9, 1990, p. 1175-1185.
Sprunt B., Sha L., and Lehoczky J.P., “Aperiodic task scheduling for hard-real-time systems”,
The Journal of Real-Time Systems, p. 27-60, 1989.
Stankovic J.A., “Misconceptions about real-time computing”, Computer, 21, p. 10-19, 1988.
Stankovic J.A., Spuri, M., Di Natale M., and Buttazzo G.C., “Implications of classical scheduling results for real-time systems”,
IEEE Computer, vol. 28, 8, p. 16-25, 1995.
98