Académique Documents
Professionnel Documents
Culture Documents
S1
L. BOUHOUCH
2022/2023
PLAN
2
• Présentation du Syllabus ;
Données
Environnement
Système Mesures
(ex : une chaîne de
informatique Evénements production, une
réaction chimique …)
Données
Environnement
Système Mesures
(ex : une chaîne de
informatique Evénements production, une
réaction chimique …)
Conséquences de la définition :
Un système Temps Réel reçoit des événements venant du procédé à contrôler ; ces
événements peuvent être périodiques ou non
le système doit réagir avant un délai ou une échéance ou une date fixée
aucun événement ne doit être raté par le système
Autre formulation : Un système fonctionne en "Temps Réel" s'il est capable d'absorber
toutes les informations d'entrée sans qu'elles soient trop vielles pour l'intérêt qu'elles
représentent, et par ailleurs de réagir à temps pour que cette réaction ait un sens.
Ne pas réagir à temps peut être considéré comme une défaillance catastrophique
Un système Temps Réel est souvent critique et doit souvent être tolérant aux pannes
Mise en place de mécanismes de tolérance aux défaillances :
Réplication, Programmation N-version, Vérification formelles …
L'important est de respecter l'échéance
Un résultat juste hors délai peut être inutilisable et considéré comme une faute
Parfois réagir trop tôt est aussi une faute (Contrôle dans un avion)
Temps Réel = Ponctualité
INTRODUCTION & DEFINITIONS
10
Aspect temporel de la dynamique des procédés :
Ordre de grandeur
Temps
de la contrainte temporelle Contrôle
En chimie
1 heure
Contrôle
fabrication
1 minute
Contrôle
stockage
1 seconde
10 ms Systèmes Robotique
1 ms vocaux Systèmes
Systèmes
radar Mesures
scientifiques
1 µs
100 ns
Application
Quelques exemples :
– Commande et contrôle de chaînes de production
– Guidage des systèmes mobiles (robotique …)
– Systèmes embarqués (avion, train, automobile …)
– Surveillance de réactions ou phénomènes physiques (nucléaire, chimie, …)
– Contrôle de malades et assistance d'opérations médicales
– Systèmes de communication et multimédia …
– Systèmes dédiés (conduite d'expérience scientifique, traitement du signal …)
– Systèmes de production de l'électricité nucléaire …
– Systèmes de production de l'électricité par l'énergie éolienne …
INTRODUCTION & DEFINITIONS
14
Quelques exemples :
– Robot de production : un robot, réalisant une activité spécifique (peinture, assemblage, tri) sur
une chaîne de production, doit effectuer son travail en des temps fixés par la cadence de
fabrication. S'il agît trop tôt ou trop tard, l'objet manufacturier traité sera détruit ou endommagé
conduisant aux conséquences financières ou humaines graves (oubli d'un ou plusieurs rivets
sur un avion …)
– Robot d'exploration (robot BIP) : ce robot doit se déplacer dans un environnement en principe
non connu (zone radioactive après un accident, planète, épave sous la mer, …). Il est important
qu'il puisse réagir aux obstacles fixes ou mobiles afin de ne pas conduire à sa perte.
Quelques exemples :
– Système de vidéo-conférence : ce système doit permettre l'émission et la réception d'images
numérisées à une cadence de 30 images par seconde pour avoir une bonne qualité de service
(quality of service). Afin de minimiser le débit du réseau, une compression des images est
effectuée. D'autre part la parole doit être aussi transmise ; bien que correspondant à un débit
d'information moindre, la régularité de la transmission (gigue temporelle) est nécessaire pour
une reproduction correcte. De plus ce signal doit être synchronisé avec le flux d'images.
L'ensemble de ces traitements (numérisations images et parole, transmission, réception,
synchronisation, …) sont réalisés en cascade, mais avec une cohérence dans le temps
précise.
– Pilotage d'un procédé de fabrication (fonderie, laminoir, four verrier, …) : la fabrication d'une
bobine d'aluminium (laminage à froid) exige un contrôle en temps réel de la qualité (épaisseur
et planéité). Cette vérification en production de la planéité nécessite une analyse fréquentielle
(FFT) qui induit un coût important de traitement. Le système doit donc réaliser l'acquisition d'un
grand nombre de mesures (246 Ko/s) et traiter ces données (moyenne, FFT, …) à la cadence de
4 ms. Ensuite, il affiche un compte-rendu sur l'écran de l'opérateur toutes les 200 ms et enfin
imprime ces résultats détaillés toutes les 2 s. Un fonctionnement non correct de ce système de
contrôle de la qualité peut avoir des conséquences financières importantes, telle une production
non conforme à la spécification demandée.
BREF HISTORIQUE DU TEMPS REEL
16
• Fin des années 50 …
Première apparition de machines numériques dans des applications temps réel (système
de commandes d'une unité de polymérisation d'une raffinerie Texaco)
• Années 60 …
Les systèmes temps réel s'étendent à des secteurs critiques tel que l'aérospatiale
(système de contrôle de vol des capsules Apollo (NASA), système de commande de vol
du Concorde (Sud Aviation) …)
• Années 70 …
L'arrivée des mini-calculateurs accélère l'insertion d'outils informatisés dans les
environnements temps réel (chaîne de production …)
• Depuis les années 80 …
Invasion de tous les secteurs industriels par l'informatique temps réel grâce à la micro-
informatique, et au développement des techniques de communication
=> Systèmes temps réel distribués
=> Explosion de l'informatique embarquée (aérospatiale, nucléaire, télécom,
automobile, marine …)
PRINCIPE DE L’ARCHITECTURE ET DU FONCTIONNEMENT DU STR
17
Principe :
Quelle que soit la nature et la complexité du STR (Système Temps Réel), on le
décompose en :
• Système contrôlé &
• Système de contrôle Interface capteurs
Système Procédé
informatique
Interface actionneurs
Environnement
Interface capteurs
Principe de fonctionnement : Système Procédé
– Interaction : informatique
Fonctionnement Cyclique :
– Scrutation d'une mémoire d'entrée périodiquement (Polling)
Echantillonnage des entrées sur l'horloge du système
Activation du système à chaque série de tops d'horloge
A chaque série de tops d'horloge faire
Lecture de la mémoire des entrées
Calcul des ordres à envoyer au procédé
Émission des ordres
Fin
Mais :
– Système Peu "Réactif", si l'environnement produit des informations à des
fréquences différentes
Obligation à prévoir toutes les réactions du système dans la même boucle
Problème de performance.
Ou obligation à imbriquer des boucles de fréquences multiples
Difficultés de réalisation, d'évolution et de lisibilité du code.
PRINCIPE DE L’ARCHITECTURE ET DU FONCTIONNEMENT DU STR
21
Fonctionnement Evénementiel :
– Activation du système à chaque événement ( Notion d'Interruption)
=>
A chaque interruption faire
Lecture de l'information arrivée
Activation du traitement correspondant
Émission des ordres issus de ce traitement
Fin
Mais : que faire si une interruption survient alors que le système est entrain de
traiter une interruption précédente
=> Notion de priorité des interruptions
=> Notion de "Tâche" associée à une ou plusieurs interruptions
=> Mécanisme de préemption et de reprise de tâche
(Capacité à traiter une tâche de haute priorité le plus rapidement possible après son apparition, alors
qu’une tâche de priorité inférieure est en cours de traitement).
=> Gestion de l'exécution concurrente des tâches (ordonnancement)
Un STR est souvent un Système multitâches incluant un gestionnaire de tâches (Ordonnanceur)
NOTION DE "SYSTÈME MULTITÂCHES"
22
: tâche
NOTION DE "SYSTÈME MULTITÂCHES"
23
Architecture logicielle d'un STR
Application
Mesures Commandes
Tâche i Tâche j Tâche k Tâche x Tâche y
…
Requête Activation, …
S2
L. BOUHOUCH
2022/2023
PLAN
2
• Rappels ;
• Contraintes de temps faibles
• Algorithme adapté aux contraintes de temps ;
• Exemple : Programmation d'un terminal
• Contraintes de temps faibles avec qqs événements contraignants ;
• Algorithme adapté aux contraintes de temps ;
• Cas d'une seule interruption (I1) de récurrence f1=1/T1 ;
• Cas de plusieurs interruptions traités de façon séquentielles ;
• Cas d'interruptions emboîtées ;
• Exemple : Terminal avec réception de caractères à vitesse élevée
RAPPELS
3
Contraintes de temps faible avec qqs événements contraignants, Temps réel Dur
Contraintes de temps fortes : tc ≈ Te.
CONTRAINTES DE TEMPS FAIBLES
4
Programmation par scrutation non valable si les contraintes de temps sont hétérogènes.
Il faut dissocier les tâches à fortes contraintes de temps, de celles à faibles contraintes, par
un traitement hors de la boucle scrutation.
CONTRAINTES DE TEMPS FAIBLES AVEC QUELQUES
EVENEMENTS CONTRAIGNANTS
10
- T1 : Période de l’interruption I1
Te1 : Echéance de temps fixé par le procédé à contrôler
- ty1 : Temps de calcul (continu) de la tâche P1
- ty0 : Durée de boucle de scrutation de la tâche P0
- Te0 : Echéance de temps du procédé géré par P0
CONTRAINTES DE TEMPS FAIBLES AVEC QUELQUES
EVENEMENTS CONTRAIGNANTS
13
Afin de ne pas perdre des signaux d'interruptions ou pour éviter une récursion
infinie ty1 < T1 (Durée de traitement d'interruption < sa périodicité)
T1
Durée de traitement de P0 est multiplié par un facteur K tel que : K ≈
T1 – ty1
Satisfaire la contrainte Te0 on doit avoir : K . ty0 < Te0
Si le programme doit gérer plusieurs interruptions simultanées 2 cas à envisager:
- Interruptions traitées séquentiellement ou
- Interruptions emboîtées.
CONTRAINTES DE TEMPS FAIBLES AVEC QUELQUES
EVENEMENTS CONTRAIGNANTS
14
2. Cas de plusieurs interruptions traités de façon séquentielles
Soient :
- T1 : Période de l’interruption I1, fréq. f1 = 1/T1
- T2 : Période de l’interruption I2, fréq. f2 = 1/T2 et T2 < T1
- ty1 : Temps de calcul (continu) de la tâche P1
- ty2 : Temps de calcul (continu) de la tâche P2
- ty0 : Durée de boucle de scrutation de la tâche P0
- Te0 : Echéance de temps du procédé géré par P0
Afin de ne pas perdre des signaux d'interruptions on doit avoir :
(ty1 + ty2) < T2 (avec T2 < T1)
T2
Durée de traitement de P0 sera multiplié par le facteur K' tel que : K' ≈
T2 – (ty1 + ty2)
Afin de satisfaire la contrainte Te0 on doit avoir : K' . ty0 < Te0
CONTRAINTES DE TEMPS FAIBLES AVEC QUELQUES
EVENEMENTS CONTRAIGNANTS
15
Traitement de l'interruption I2
emboîtée dans T1 rallonge ty1 d'un
facteur K2 tel que : T2
K ≈
2
T2 – ty2
Tâche Lire : Exécution dépendant des conditions externes non liées à une
interruption (caractère frappé).
Tâche Lire_ligne : Déclenchée par l'interruption de réception d'un caractère. Place
le caractère reçu dans un tampon (FIFO). Pas de débordement du tampon envisagé.
Tâche Afficher : Exécution dépendant d'une condition interne (taux de remplissage
du tampon).
CONTRAINTES DE TEMPS FAIBLES AVEC QUELQUES
EVENEMENTS CONTRAIGNANTS
18
EXEMPLE : Suite
Algorithme simplifié du programme terminal :
P0
- T1 : Pér. I1
P1
Echéance : Te1
de l’Interruption
- ty1 : Tcalc de P1
d’exécution
- ty0 : Durée boucle
scrut. P0
Durée
- Te0 : Echéance de P0
EXEMPLE : Suite
Hypothèses :
Temps de cycle cumulé des tâches afficher et lire : ty0 = 2.10-3 s
Echéance de temps fixée par la tâche lire : Te0 = 0,1 s
Durée du programme d'interruption : ty1 = 0,255.10-3 s
Exemple de réception à 9600 Bauds :
f1 = 9600/10 bits = 960 Interruptions/secondes.
Contraintes de temps :
Te1 = 10/9600 = 1,04.10-3 s
EXEMPLE : Suite
Réception à 19200 Bauds :
Contraintes de temps :
Te1 = 10/19200 = 0,52.10-3 s
ty1 vérifie la contrainte Te1 (0,255.10-3 s < 0,52.10-3 s)
Pire cas ty0 . Te1/(Te1 - ty1) = 2.10-3x0,52.10-3/(0,52.10-3 - 0,255.10-3) = 3,92.10-3 s
Contrainte sur Te0 vérifiée : 3,92.10-3 s < 0,1 s
EXEMPLE : Suite
Diagramme de flots de données
correspondant 4 tâches :
Tâche matérielle Lire : Déclenchée par l'interruption due à la frappe d'un caractère
clavier. Place le caractère reçu dans un autre tampon (FIFO). Pas de débordement
du tampon envisagé.
Tâche matérielle Lire_ligne : Déclenchée par l'interruption de réception d'un caractère.
Place le caractère reçu dans un tampon (FIFO). Pas de débordement du tampon
envisagé.
2 Tâches logicielles Afficher et Emettre : Exécution dépendant des conditions
internes (taux de remplissage des tampons d'émission et de réception).
CONTRAINTES DE TEMPS FAIBLES AVEC QUELQUES
EVENEMENTS CONTRAIGNANTS
22
Conclusion
Lorsque les contraintes de temps sont nombreuses et variées, la programmation
peut devenir très complexe. On préfère alors contrôler les tâches à l’aide d'un
programme spécial appelé moniteur temps réel.
Celui-ci se charge de lancer, de synchroniser et d'arrêter les tâches. Il fournit en
outre de puissants moyens de communication entre les tâches concurrentes.
Temps Réel
S3
Systèmes multitâches et
Noyau temps réel
L. BOUHOUCH
2022/2023
PLAN
2
• Introduction
• Etats d’une tâche :
• Non créé ;
• Dormant ou Créé ;
• Prêt ou Eligible ;
• En exécution ;
• Bloqué ou Suspendu ;
• Transitions entre états d'une tâche ;
• Politiques d'ordonnancement ;
• Systèmes avec/sans réquisition du processeur :
• Noyau coopératif
• Noyau préemptif ;
• Temps de latence ;
• Temps réel dur & mou ;
INTRODUCTION
3
A un instant donné, chaque tâche se trouve dans l’un des états suivants :
La politique d'ordonnancement définit le critère utilisé par le noyau pour élire une tâche.
Diverses politiques d'ordonnancement sont utilisées :
1- Ordonnancement Circulaire ou Tourniquet :
Les tâches possèdent la même priorité.
Les tâches se partagent le processeur sans affinité particulière.
Convient rarement pour les systèmes temps réel.
POLITIQUES D'ORDONNANCEMENT
13
Exemple tourniquet :
Soit 3 tâche T1, T2, T3 de durées
respectives 6, 3, 4 démarrant à 0.
En s’exécutant pendant 1 quantum
chacune, l’ordre d'exécution est :
T1-T2-T3 - T1-T2-T3 - T1-T2-T3
- T1-T3-T1-T1
T3
T2
T1
POLITIQUES D'ORDONNANCEMENT
14
NOYAU COOPERATIF
NOYAU PREEMPTIF
Noyau avec réquisition du processeur alloue celui-ci de façon transparente aux tâches,
en fonction des priorités en cours.
La tâche qui se trouve Préemptée n'a aucune possibilité de le savoir.
Mécanisme réalisé par un programme d'interruption lancé par une interruption périodique
à forte priorité. Ce programme explore les files de tâches prêtes ou suspendues et
attribue le processeur à l'une d'elle selon une politique d'ordonnancement spécifique à
chaque noyau.
SYSTEMES AVEC OU SANS REQUISITION DU PROCESSEUR
20
Th1
PREEMPTIF
Th2
SYSTEMES AVEC OU SANS REQUISITION DU PROCESSEUR
21
Non PREEMPTIF
Th2
Th1
PREEMPTIF
Th2
SYSTEMES AVEC OU SANS REQUISITION DU PROCESSEUR
22
TEMPS DE LATENCE
Noyau temps réel Mou ne spécifie ni les temps de commutation de contexte, ni les temps
de latence.
Un noyau temps réel Dur garanti un temps max. de commutation de contexte et un temps
de retard max. entre l'apparition d'interruption et son début de traitement.
Les temps de commutation de contexte : de 1 à 100 µs (fonction du noyau et processeur),
soit 10000 commutations/secondes dans le cas le plus défavorable.
Temps Réel
S4
L. BOUHOUCH
2022/2023
PLAN
2
Traite :
Gestion des tâches selon un Mécanisme approprié.
Accès concurrent aux données partagées.
Mécanismes de communications.
Mécanismes de synchronisation.
Structure d’une application Mtr86-68K
STRUCTURE D’UNE APPLICATION Mtr86-68K
5
#include "mtr86.h" // Les fichiers à inclure dépendent de la cible ; ici le Mtr86-68K
// Prototype des fonctions – Parfois facultatif, cela dépend de l’emplacement de main() et init()
[TACHE init(void) ;] // Prototype de la tâche init. (Tâche d’initialisation) possédant la plus haute priorité.
// Aucune autre tâche ne s’exécute tant que celle-ci n’est pas terminée ou suspendue
[TACHE T(void) ;] // Prototype de la tache T.
TACHE init(void)
{
// Créer les sémaphores (variables permettent de compter le nombre de tâches endormies ou les réveils en
attente), tubes, et autres mécanismes
//...
// Créer et éventuellement activer les tâches
active(cree(T, 1, 512)) ; // crée et active la tâche T de priorité 1 et 512 octets de pile.
// Suspendre ou terminer la tâche
// La fin de l’application est obtenu par un appel à la primitive mtr86exit(0) dans une tâche quelconque
}
TACHE T(void)
{ // ...
}
main()
{
start_mtr(init, 512) ; // Lance la tâche init avec une taille de pile de 512 octets
}
Mise en évidence de la politique
d’ordonnancement dans le Mtr86-68K
MISE EN EVIDENCE DE LA POLITIQUE D’ORDONNANCEMENT DANS Mtr86
7
#include "mtr86.h"
TACHE T1(void)
{
long i, j ;
// Durant cette séquence T2 et T3 sont arrêtés
printf("T1: actif (priorité 1) et bloque T2 et T3 (priorité 2)\n") ;
for (j=0 ; j<1000000 ; j++) ;
// Remarque : cette séquence alloue le processeur pour un travail inutile (pour peut être effectuer une
// temporisation). Cette façon de procéder gaspille le temps CPU et ne doit jamais être utilisée.
// Durant la séquence suivante T2, T3 sont actifs à chaque appel de dort durant 1 quantum.
printf("T1: Se suspend périodiquement et libère du temps processeur pour T2 et T3\n\n") ;
for(j=0 ; j<250 ; j++)
{
for(i=0 ; i<10000 ; i++) ; // Simuler l'activité de la tâche
dort(1) ; // T2 et T3 actifs durant 1 quantum (≈1 ms)
}
MONITOR // Accès exclusif de T1 à la ressource écran
gotoxy(1,8) ; // Aller à colonne 1 et ligne 8
printf("T1 : Fin Accélération de T2 et T3\n\n") ;
ENDM // Fin accès
} // T1 est arrêté, ce qui alloue le processeur à T2 et T3 : l'affichage est accéléré
MISE EN EVIDENCE DE LA POLITIQUE D’ORDONNANCEMENT DANS Mtr86
8
TACHE T2(void) // T2 est exécutée de façon concurrente avec T3
{ unsigned i, j ;
for(j=0 ; j<300 ; j++)
{
MONITOR // Accès exclusif de T2 à la ressource écran
gotoxy(1, 6) ; // Aller à colonne 1 et ligne 6
cprintf("T2 : j= %d\n", j) ;
ENDM // Fin accès
for(i=0 ; i<1000 ; i++) ; // Simuler l'activité de la tâche
}
} // T2 est arrêté
TACHE T3(void) // T3 est exécutée de façon concurrente avec T2
{ unsigned i, j ;
for(j=0 ; j<500 ; j++)
{
MONITOR // Accès exclusif de T3 à la ressource écran
gotoxy(1, 7) ; // Aller à colonne 1 et ligne 7
cprintf("T3 : j= %d\n", j) ;
ENDM // Fin accès
for(i=0 ; i<300 ; i++) ; // Simuler l'activité de la tâche
}
mtr86exit(0) ; // Le noyau est stoppé. Sortie après start_mtr() //jamais exécuté
}
MISE EN EVIDENCE DE LA POLITIQUE D’ORDONNANCEMENT DANS Mtr86
9
// Tâche d'initialisation. Possède la priorité maximale. Aucune autre tâche ne peut s'exécuter tant que celle-ci
// n'est pas terminée ou suspendue
// La tâche init dans cet exemple crée et active 3 tâches.
// La tâche T1 est la plus prioritaire et préempte le processeur au détriment des tâches T2 et T3.
TACHE init(void)
{
printf("Init debut\n") ;
active(cree(T1, 1, 1024)) ; // Crée et active la tâche T1 ; Priorité 1 ; 1024 octets de pile
active(cree(T2, 2, 1024)) ; // Crée et active la tâche T2 ; Priorité 2 ; 1024 octets de pile
active(cree(T3, 2, 1024)) ; // Crée et active la tâche T3 ; Priorité 2 ; 1024 octets de pile
printf("Init fin\n") ; // A partir d'ici la tâche T1 est lancée en 1er
}
main()
{
// Lance la tâche init avec une taille de pile de 1024 octets
clsscr() ;
printf(" --------------------- Exemple ---------------------\n") ;
start_mtr(init, 1024) ;
}
Création et activation d’instances
multiples d’une même tâche
CREATION ET ACTIVATION D’INSTANCES MULTIPLES D’UNE MEME TACHE
11
Si les tâches effectuent un travail similaire Créer des instances multiples d’une même tâche.
Problème posé : Tâche doit pouvoir s’identifier.
Exemple créant et activant 8 instances d’une même tâche, chacune affichant la valeur d’un
compteur sur un emplacement différent de l’écran.
#include "mtr86.h"
TACHE init(void) ; // PROTOTYPES DES TACHES
TACHE T(void) ;
TACHE init(void)
{
int j ;
dsp_stk() ; // Visualise les consumations en fin de prog
for(j=0 ; j<8 ; j++)
active (cree(T, 2, 1024)) ; // Créer et lance les instances de tâches
dort (cvrtic(10000)) ; // Temporisation : cvrtic convertit les 10000 ms en quantums
mtr86exit(0) ;
}
CREATION ET ACTIVATION D’INSTANCES MULTIPLES D’UNE MEME TACHE
12
TACHE T(void)
{ int j = 0;
int x, y, tache ;
for( ; ; )
{
tache = tache_c() - 2 ; // Lit le numéro de la tâche courante (1er N° = 2)
x = ((tache%10) + 1)*7 ;
y = (tache/10) + 1 ;
MONITOR
gotoxy(x, y+10) ; // Aller à colonne x et ligne y+10
printf("%d\n", j++) ;
ENDM
dort (10) ;
}
}
main() // Tâche principale
{
clsscr() ;
printf("Exemple de création d'instances multiples d'une même tache.\r\n"
"init() crée 8 taches T() identiques, chacune incrémente un compteur et l'affiche sur l'ecran.\r\n"
"Fin au bout d’environ 10s.\r\n") ;
start_mtr(init,1024) ;
}