Vous êtes sur la page 1sur 29

3- Programmes temps réel

Programmes temps réel


Cours du Système Embarqué et Temps Réel

Prof. Nabil KANNOUF

UAE – ENSAH

25 octobre 2021
3- Programmes temps réel

Plan

1 Ordonnancement de processus
2 Ordonnancement dans systèmes temps réel
3 Ordonnancement par l’échéance Processus
4 Limitations de l’ordonnancement en ligne
5 Tâches périodiques, apériodiques et sporadiques
6 Ordonnancement et priorités dans Linux
7 Ordonnancement temps réel dans Linux
8 Ordonnanceur SCHED_DEADLINE
9 Gestion de l’ordonnancement temps réel
3- Programmes temps réel
3.1- Ordonnancement de processus

3.1- Ordonnancement de processus


3- Programmes temps réel
3.1- Ordonnancement de processus

Ordonnancement de processus

Dans SE moderne, plusieurs processus sont généralement présents et actifs


� Un seul processus est en exécution sur chaque processeur
� Exécution d’un processus ne doit pas monopoliser la ressource
� On veut faire une allocation correcte des ressources aux processus
� Préemption permet d’interrompre un processus à tout moment et d’allouer
processeur à un autre processus
� Mais quand doit-on préempter un processus et quel autre processus doit-on exécuter ?
� Dans certains cas, on ne veut/peut pas faire de la préemption
Ordonnancement de processus
� Mission importante des SE modernes
� Stratégies d’ordonnancement peuvent varier selon le contexte
� Élément important avec programmes temps réel
3- Programmes temps réel
3.1- Ordonnancement de processus

Effets et besoin de l’ordonnancement

Variété de profils d’utilisation


� Calculs intensifs vs utilisation légère
� E/S nombreuses vs limités
� Interactions soutenues avec utilisateur vs traitements d’arrière-plan
Variété autant au niveau des machines que des processus
� Téléphone intelligent vs serveur de calcul
� Station de développement, avec IDE, compilateur, navigateur Web, lecteur audio, etc.
3- Programmes temps réel
3.1- Ordonnancement de processus

Objectifs de l’ordonnancement

Selon type de système, objectifs d’ordonnancement varient


� Pour tous les systèmes
� Équité : chaque processus doit avoir sa juste part du processeur
� Respect des politiques : observer que politiques sont effectives
� Balance : s’assurer que toutes les composantes du système sont utilisées
� Systèmes batch (ex. serveurs de calcul)
� Débit : maximiser le nombre de tâches complétées par heure
� Temps de réponse : minimiser le délai entre la soumission et la complétion d’une tâche
� Utilisation du processeur : utiliser le processeur en tout temps
� Systèmes interactifs (ex. station de travail)
� Temps de réponse : répondre aux requêtes rapidement
� Proportionnalité : remplir les attentes des utilisateurs
� Systèmes temps réel (ex. systèmes embarqués)
� Respecter les échéances : éviter de perdre des données ou mesures
� Prédictibilité : éviter une dégradation de la qualité (ex. multimédia)
3- Programmes temps réel
3.1- Ordonnancement de processus

Stratégies d’ordonnancement sur systèmes batch


Premier arrivé, premier servi (first-come, first-served)
� Processus sont traités dans l’ordre dans lequel ils ont été soumis
� Simple à comprendre, fait un certain sens dans le temps des mainframes
� Lorsque processus en attente d’E/S, replacé dans la file d’attente
� Désavantage important : processus de calculs vs processus avec E/S fréquentes
Tâche la plus courte d’abord (shortest job first)
� Plusieurs tâches d’importance égale, de durée connue à l’avance
� Minimise le temps de réponse moyen

� Optimal seulement lorsque toutes les tâches disponibles simultanément


Tâche avec plus bas temps restant d’abord (shortest remaining time next)
� Durée des tâches connues à l’avance
� Permet gestion d’arrivée de nouvelles tâches
3- Programmes temps réel
3.1- Ordonnancement de processus

Stratégies d’ordonnancement sur systèmes interactifs

Round robin
� Chaque processus s’exécute pour une période fixe (le quantum)
� Processus préempté à la fin du quantum si encore en exécution, placé à la fin de la
file

� Facile à implanter, ne requiert pas de connaître temps des tâches


� Ajustement du quantum
� Quantum trop court implique perte dans changement de contexte
� Quantum trop long augmente délai de réponse des tâches courtes
3- Programmes temps réel
3.1- Ordonnancement de processus

Stratégies d’ordonnancement sur systèmes interactifs


Avec priorité
� Processus ne sont pas toujours d’importances égales
� Assigner priorité à chaque processus
� Exécuter processus de haute priorité d’abord
� Processus de haute priorité peuvent consommer toute la ressource
� Réduire graduellement priorité durant exécution
� Alternativement, limiter exécution à un quantum avant de passer à tâche suivante
� Priorités assignées statiquement ou dynamiquement
� Priorités statiques : assignées au lancement du processus
� Priorités dynamiques : modifiées durant l’exécution (ex. selon nature des traitements,
E/S vs calcul)
� Processus souvent groupés selon classes de priorité
3- Programmes temps réel
3.1- Ordonnancement de processus

Stratégies d’ordonnancement sur systèmes interactifs

Plus court processus d’abord (shortest process next)


� Processus interactifs en relation directe avec utilisateur
� Cycles interactifs : attente-commande-résultat
� Estimer temps d’exécution selon historique d’utilisation

E (i) = αT (i − 1) + (1 − α)E (i − 1)

� E (i) : durée estimée du traitement d’une commande au temps i


� T (i) : durée mesurée du traitement d’une commande au temps i
� α : paramètre pour le mélange en estimation actuelle et mesure de la durée de la
dernière commande
� Démarre avec estimation initiale E (0), qui est graduellement oubliée
� Ordonnancement basé sur cette estimation du temps d’exécution
3- Programmes temps réel
3.1- Ordonnancement de processus

Stratégies d’ordonnancement sur systèmes interactifs

Fair share
� Assigner priorité selon les utilisateurs et leur utilisation de la ressource
� Éviter que certains utilisateurs monopolisent la ressource
� Exemple avec deux utilisateurs
� Utilisateur 1 a quatre processus (A, B, C , D), utilisateur 2 en a un seul (E )
� Ordonnancement avec round robin :ABCDEABCDEABC ...
� Ordonnancement avec fair share : AEBECEDEAEBECE ...
� Démarrer avec part égale entre utilisateurs, réduire priorité selon utilisation
� Calculer priorités pour que partage de la ressource entre utilisateurs soit équitable
� Critère d’équité à définir selon le contexte
3- Programmes temps réel
3.2- Ordonnancement dans systèmes temps réel

3.2- Ordonnancement dans systèmes temps réel


3- Programmes temps réel
3.2- Ordonnancement dans systèmes temps réel

Ordonnancement dans systèmes temps réel

Ordonnancement dans systèmes interactifs


� Avec ordinateurs modernes, utilisateurs trop lents pour percevoir différences
� Ordonnancement round robin (ou avec priorité) fait un bon travail
Tout autre histoire dans systèmes temps réel
� Délais stricts à respecter
� Capacités de traitement plus justes relativement aux capacités
Ordonnancement est central dans systèmes temps réels
3- Programmes temps réel
3.2- Ordonnancement dans systèmes temps réel

Tâches dans systèmes temps réel

Caractéristiques des tâches lors de temps réel


� Durée fixe ou variable des tâches
� Incertitude sur le temps d’exécution des tâches (jitter)
� Tâches récurrentes ou sporadiques
� Tâches sporadiques proviennent souvent d’événements externes et difficiles à prédire
Modèle de tâches périodiques
� Tâches périodiques, se répétant selon une certaine fréquence
� Période : durée minimale entre deux lancements d’une même tâche
� Temps d’exécution : durée maximale d’une certaine tâche
� En général, temps d’exécution doit être moins que la période
3- Programmes temps réel
3.2- Ordonnancement dans systèmes temps réel

Respect des échéances

Temps réel dur vs temps réel doux


� Temps réel dur : échéances doivent absolument être respectées
� Temps réel doux : indulgence sur le respect des échéances
Quelle valeur a une tâche dont échéance est échue ?
� Dépend grandement du type d’application
� Temps réel dur exige des garanties
� Temps réel doux exige plus souvent un meilleur effort (best effort)
3- Programmes temps réel
3.2- Ordonnancement dans systèmes temps réel

Dépendance entre les tâches


Certaines tâches peuvent dépendre d’autres tâches
� Dépendance des données : rasultat d’une tâche est utilisé comme entrée d’une autre
� Exemple : cat fichier | grep motspecial
� Dépendance temporelle : une tâche ne doit pas être exécutée à plus d’un certain
délai d’une autre
� Traiter image et audio conjointement lorsque séquence vidéo est jouée
� Tâche conditionnelle
� Exécution d’une tâche est conditionnelle au résultat d’autres tâches
Modéliser dépendances entre tâches d’une application par un graphe
3- Programmes temps réel
3.2- Ordonnancement dans systèmes temps réel

Accès aux ressources

Tâches requièrent ressources pour leur exécution


� Ressource commune à toutes les tâches : processeur
� Autres ressources peuvent aussi être nécessaires : réseau, écran, base de données,
capteur, etc.
� Tâche peut devoir acquérir une ressource (lock) pour s’exécuter
� Autres tâches requérant la ressource doivent attendre qu’elle soit libérée
Ordonnancement doit tenir compte des dépendances et des ressources
3- Programmes temps réel
3.2- Ordonnancement dans systèmes temps réel

Ordonnancement contrôlé par le temps


Ordonnancement contrôlé par le temps (time-driven scheduling)
� Temps de lancement des tâches à moments précis
� Généralement, instants choisis avant exécution du système
� Ordonnancement peut être calculé hors ligne et stocké dans le système
� Algorithmes complexes d’ordonnancement peuvent être employés pour calculer cédule
optimale
� Approprié dans contexte de temps réel dur
� Contraintes strictes sur délais
� Prédictibilité du temps d’exécution des tâches
� Environnement où évolue système généralement bien contrôlé
Ordonnancement round robin pondéré
� Assigner poids différent à chaque processus
� Poids fait varier le temps de processeur alloué à chaque cycle du round robin
� Pas très utile pour systèmes embarqués en général, utile pour réseautique haute
performance
3- Programmes temps réel
3.2- Ordonnancement dans systèmes temps réel

Ordonnancement contrôlé par les évènements

Ordonnancement contrôlé par les évènements (event-driven scheduling)


� Ordonnancement à la volée, selon les évènements survenant sur le système
� Approches d’ordonnancement vues pour systèmes interactifs (ex. avec priorité)
peuvent s’appliquer
Système statique vs dynamique (systèmes multiprocesseurs)
� Système statique : tâche assignée à un processeur pour toute son exécution
� Système dynamique : tâche peut migrer entre processeurs en cours d’exécution
Préemption avec ordonnancement contôlé par les évènements
� Dans systèmes interactifs, préemption va de soi
� Permet au système d’être réactif
� Mais dans systèmes temps réel, préemption n’est pas toujours nécessaire
� Préemption peut même introduire ordonnancement inférieur à ce qu’on peut obtenir
dans système sans préemption (borne inférieure moins bonne)
3- Programmes temps réel
3.2- Ordonnancement dans systèmes temps réel

Exemples ordonnancement avec et sans préemption

Ordonnancement avec préemption vs sans préemption


� Tâche J5 lancée à t = 4

Inspiré de Jane W.S. Liu. Real-time systems. Prentice-Hall, 2000.


3- Programmes temps réel
3.3- Ordonnancement par l’échéance Processus

3.3- Ordonnancement par l’échéance Processus


3- Programmes temps réel
3.3- Ordonnancement par l’échéance Processus

Temps de lancement, durée d’exécution et échéances

Contraintes de temps réel souvent énoncées comme échéances sur les tâches
� Temps de lancement : moment où tâche est disponible pour être exécutée (sans égard
aux dépendances)
� Durée d’exécution : durée d’exécution maximale de la tâche
� Échéance : moment où tâche doit avoir complétée son exécution (sans égard aux
tâches qui découlent)
3- Programmes temps réel
3.3- Ordonnancement par l’échéance Processus

Temps de lancement et échéances effectifs

Avec Dépendance entre tâches, il faut revoir les temps de lancement et échéances
effectifs
� Temps de lancement effectif (ri ) : maximum entre le temps de lancement de la tâche

(ri ) et le temps de lancement effectif de ses prédécesseurs directs (Pi ) plus leurs
durées d’exécution (ej )

ri = max [ri , max (rj + ej )]


� �

j∈Pi

� Échéance effective (di ) : minimum entre l’échéance de la tâche (di ) et l’échéance


effective de ses successeurs directs (Ni ) moins leurs durées d’exécution (ej )

di = min[di , min (dj − ej )]


� �

j∈Ni
3- Programmes temps réel
3.3- Ordonnancement par l’échéance Processus

Temps de lancement et échéances effectifs

Calcul des temps de lancement et échéances effectifs


� Parcourir tableau dans le bon ordre, selon graphe de dépendances
� Calcul temps de lancement effectifs : partir tâches sans prédécesseur et parcourir graphe
suivant dépendances jusqu’aux tâches terminales
� Calcul échéances effectives : partir tâches terminales (sans successeur) et parcourir
graphe en remontant les dépendances, jusqu’aux tâches sans prédécesseur
� Instance de programmation dynamique (complexité O(N2))
� Démontré que durée d’exécution pas toujours nécessaire pour ordonnancer tâches
� Si faisable selon contraintes et temps d’exécution, cédule optimale pour un processeur
peut être trouvée sans durée d’exécution
3- Programmes temps réel
3.3- Ordonnancement par l’échéance Processus

Exemple calcul temps de lancement et échéances effectifs

Temps de lancement, durée d’exécution et échéances


J1 J2 J3 J4 J5 J6 J7
Temps de lancement (ri ) 2 0 1 4 1 0 6
Durée d’exécution (ei ) 3 4 2 1 3 7 5
Échéance (di ) 10 7 13 12 15 20 21
Temps de lancement et échéances effectifs
J1 J2 J3 J4 J5 J6 J7

Temps de lancement (ri ) 2 0 5 7 7 10 8

Échéance (di ) 8 7 10 12 13 20 21
3- Programmes temps réel
3.3- Ordonnancement par l’échéance Processus

Ordonnancement par l’échéance la plus hâtive

Ordonnancement par l’échéance la plus hâtive (earliest deadline first, EDF)


� Choisir la prochaine tâche comme étant celle avec l’échéance (effective, si dépen-
dances) est la plus hâtive
� Garanties qu’EDF génère cédules faisables (respecte les contraintes)
� Avec un seul processeur, sans autre ressource utilisée par les tâches
� Système permet la préemption
� Existe une cédule faisable pour les tâches à exécuter sur un processeur
� Alors EDF va produire une cédule faisable
� EDF est un algorithme d’ordonnancement important pour faire du temps réel
3- Programmes temps réel
3.3- Ordonnancement par l’échéance Processus

Ordonnancement LRT et LST

Ordonnancement par temps de lancement le plus tardif (latest release time, LRT)
� Inverse d’EDF : part de la fin et choisi tâches selon temps de lancement (effectif, si
dépendances) le plus élevé
� On veut uniquement que les échéances soient respectées
� Même garanties qu’EDF sur la capacité à produire des cédules faisables
Ordonnancement par marge de temps la plus petite (least slack time, LST)
� Marge de temps : échéance effective moins temps restant à la tâche
� Utiliser borne maximale sur temps restant d’exécution
� Reviens à ordonnancement avec priorités dynamiques, où priorité est inverse de la
marge
� Garanties sur production de cédules faisables
3- Programmes temps réel
3.3- Ordonnancement par l’échéance Processus

(Non) optimalité d’EDF et LST


Cas problématiques avec EDF (et LST)
� Si plus d’un processeur ⇒ pas de garanti qu’EDF ou LST vont trouver cédule faisable

� Echéances : J1 à 1, J2 à 2, J3 à 5
� Si système ne permet pas préemption ⇒ pas de garanti également

� Echéances : J1 à 10, J2 à 14, J3 à 12


3- Programmes temps réel
3.3- Ordonnancement par l’échéance Processus

Fin de Séance
Vos Questions ?

Vous aimerez peut-être aussi