Systèmes Fabien Calcado , M CEA Systèmes Email: prénom Programmation multitâche et or s temps réel Matthieu Lemerre A, LIST s temps réel [email protected]rdonnancement– EFREI 2011 1 Conten Programmation multitâ – Complément sur la syn – Complément sur la syn – Interruptions – Caractéristiques des tâ réel Ordonnancement mono Programmation multitâche et ordon – Définitions et stratégie certains modèles de tâ nu du cours âche nchronisation des processus nchronisation des processus âches dans les systèmes temps oprocesseur nnancement – EFREI 2011 2 es d’ordonnancement pour âches Programma Système – Dispose : • Plusieurs ressources • Plusieurs ressources » CPU(s), mémoire, disques • Chacune capable d’assure – Afin de remplir : • Plusieurs fonctionnalités • Application = une ou plusie Programmation multitâche et ordon » Indépendantes ou non » Rythmes d’activation diffé Besoin de partager les ress afin de profite ation multitâche s durs, cartes réseau … er une fonction à la fois eurs tâches (une ou plusieurs fonctions) nnancement – EFREI 2011 3 érents ou pas entièrement définis sources entre différentes tâches er du parallélisme Programma Système – Architecture logicielle • Ensemble de tâches (prog concurrente – Architecture matérielle • Ensemble limité de ressou interconnectées » Architecture mono / multip » Architecture répartie ou di Programmation multitâche et ordon ation multitâche grammes) à exécuter de manière urces de traitements (CPUs) processeur istribuée nnancement – EFREI 2011 4
cours_STR_2_efrei_2011_12 [Mode de compatibilité]Systèmes temps
réel
Contenu du cours
réel
– Définitions et stratégies d’ordonnancement pour certains modèles
de tâches
Contenu du cours
Ordonnancement monoprocesseur
Définitions et stratégies d’ordonnancement pour certains modèles de
tâches
Programmation multitâche
Système – Dispose :
– Afin de remplir : • Plusieurs fonctionnalités • Application = une
ou plusieurs tâches (une ou plusieurs fonctions)
Programmation multitâche et ordonnancement
• Application = une ou plusieurs tâches (une ou plusieurs
fonctions) » Indépendantes ou non » Rythmes d’activation différents
ou pas entièrement définis
Besoin de partager les ressources entre différentes tâches afin de
profiter du parallélisme
Programmation multitâche
Chacune capable d’assurer une fonction à la fois
Application = une ou plusieurs tâches (une ou plusieurs
fonctions)
Programmation multitâche et ordonnancement – EFREI 2011 3
Application = une ou plusieurs tâches (une ou plusieurs
fonctions)
Rythmes d’activation différents ou pas entièrement définis
les ressources entre différentes tâches afin de profiter du
parallélisme
Programmation multitâche
• Ensemble de tâches (programmes) à exécuter de manière
concurrente
– Architecture matérielle • Ensemble limité de ressources de
traitements (CPUs)
interconnectées » Architecture mono / multiprocesseur »
Architecture répartie ou distribuée
Programmation multitâche et ordonnancement
Ensemble limité de ressources de traitements (CPUs)
Architecture mono / multiprocesseur Architecture répartie ou
distribuée
Programmation multitâche et ordonnancement – EFREI 2011 4
Programmation multitâche
Mise en œuvre d’un système – Cela suppose une allocation des
tâches
ressources au cours du tempsressources au cours du temps • Faire
cette allocation au cours du temps c’est ordonnancer les tâches •
Contexte temps réel l’ordonnancement doit satisfaire les
contraintes temporelles de l’ensembles des tâches
– Terminologie • L’ordonnancement est l’organisation de l’exécution
des tâches sur
les ressources du système
Programmation multitâche et ordonnancement
• La politique d’ordonnancement l’exécution des tâches
Programmation multitâche
Mise en œuvre d’un système allocation des tâches sur les
diverses
au cours du tempsau cours du temps Faire cette allocation au cours
du temps c’est ordonnancer les tâches
l’ordonnancement doit satisfaire les contraintes temporelles de
l’ensembles des tâches
est l’organisation de l’exécution des tâches sur
Programmation multitâche et ordonnancement – EFREI 2011 5
Séquencement , entrelacement…
Programmation multitâche
Monoprogramming – Un ordinateur :
• 1 processeur, de la mémoire et d’autres ressources• 1 processeur,
de la mémoire et d’autres ressources
– Tout faire en une tâche (programmation en boucle) • Programmation
cyclique : activation périodique de la tâche
– Avantage : • Simple à mettre en œuvre • Vérification simple
(déterministe)
Programmation multitâche et ordonnancement
Programmation multitâche
1 processeur, de la mémoire et d’autres ressources1 processeur, de
la mémoire et d’autres ressources
(programmation en boucle) Programmation cyclique : activation
périodique de la tâche
Vérification simple (déterministe)
Vérification simple (déterministe)
Programmation multitâche
Multiprogramming – Un programme a besoin
• D’un ou plusieurs processeur virtuel (process/thread)• D’un ou
plusieurs processeur virtuel (process/thread) • D’une mémoire
virtuelle (espace d’adressage) • De ressources virtuelles
• Exemple du processus UNIX » 1 processus = 1 « processeur
virtuel
– Faire fonctionner plusieurs programmes en parallèle
Programmation multitâche et ordonnancement
– Faire fonctionner plusieurs programmes en parallèle – L’OS est le
programme en charge de la multi
programmation • Isolation entre les programmes • Partage des
ressources
Programmation multitâche
Un programme a besoin D’un ou plusieurs processeur virtuel
(process/thread)D’un ou plusieurs processeur virtuel
(process/thread) D’une mémoire virtuelle (espace d’adressage)
Exemple du processus UNIX processeur virtuel »
Faire fonctionner plusieurs programmes en parallèle
Programmation multitâche et ordonnancement – EFREI 2011 7
Faire fonctionner plusieurs programmes en parallèle est le
programme en charge de la multi -
Isolation entre les programmes
Programmation multitâche
Isolation des programmes – Se prémunir d’éventuel programme
défaillant– Se prémunir d’éventuel programme défaillant
• Isolation accès mémoire (MMU) • Accès aux ressources
sécurisé
» Services système (noyau) » Assure une utilisation correcte des
ressources
• Programmation défensive » Vérifications de viol de quotas,
hypothèses sur les interruptions…
Programmation multitâche et ordonnancement
Programmation multitâche
Isolation des programmes Se prémunir d’éventuel programme
défaillantSe prémunir d’éventuel programme défaillant
Isolation accès mémoire (MMU) Accès aux ressources sécurisé
Services système (noyau) Assure une utilisation correcte des
ressources
Vérifications de viol de quotas, hypothèses sur les
interruptions…
Programmation multitâche et ordonnancement – EFREI 2011 8
conception similaire Sûreté de fonctionnement ≠ zéro défaut
Programmation multitâche
• Possible si plusieurs ressources » CPUs, Mémoire…
– Allocation « temporelle » • Au cours du temps • Obligatoire si
une seule ressource
» D’un CPU, accès du disque, accès du port série…
Programmation multitâche et ordonnancement
Ordonnancement CPU(s) : organisation de l’exécution des tâches par
le(s) processeur(s) du système
Programmation multitâche
»
Obligatoire si une seule ressource D’un CPU, accès du disque, accès
du port série…
Programmation multitâche et ordonnancement – EFREI 2011 9
Ordonnancement CPU(s) : organisation de l’exécution des tâches par
le(s) processeur(s) du système
Besoins primordiaux – La communication entre les tâches
• Transfert de données
• Transfert de données
– La synchronisation entre les tâches • ordonnancement des
traitements les uns par rapport aux autres
Propriétés souvent assurées – La cohérence des données – Le
déterminisme de l’exécution
Programmation multitâche et ordonnancement
La communication entre les tâches
Programmation multitâche
La synchronisation entre les tâches ordonnancement des traitements
les uns par rapport aux autres
Propriétés souvent assurées La cohérence des données Le
déterminisme de l’exécution
Programmation multitâche et ordonnancement – EFREI 2011 10
Le déterminisme de l’exécution indépendant du parallélisme
Sources d’incohérences – Ne sont pas dû au parallélisme…
Programmation multitâche
– Ne sont pas dû au parallélisme… – … mais aux interactions entre
des programmes
déroulant en parallèle • Mémoire commune • Ressources partagées •
Communications (ordres des)…
Programmation multitâche et ordonnancement
Programmation multitâche
Ne sont pas dû au parallélisme… … mais aux interactions entre des
programmes se
Communications (ordres des)…
Programmation multitâche et ordonnancement – EFREI 2011 11
Définition : section critique – Portion de code dans laquelle une
tâche utilise des
Programmation multitâche
– Portion de code dans laquelle une tâche utilise des ressources
qui peuvent être utilisées par d’autres tâches, mais qui ne peuvent
pas être utilisées par celles même moment
• Un exemple commun de ressource partagée est un ensemble de blocs
mémoire
• Permet de s’assurer qu’une portion de code est exécutée de
manière séquentielle
Programmation multitâche et ordonnancement
• il faut donc (essayer de) les minimiser
section critique Portion de code dans laquelle une tâche utilise
des
Programmation multitâche
Portion de code dans laquelle une tâche utilise des ressources qui
peuvent être utilisées par d’autres tâches, mais qui ne peuvent pas
être utilisées par celles -ci au
Un exemple commun de ressource partagée est un ensemble de
Permet de s’assurer qu’une portion de code est exécutée de
Programmation multitâche et ordonnancement – EFREI 2011 12
Attention, les sections critiques diminuent le taux de
il faut donc (essayer de) les minimiser
Pourquoi synchroniser ? (rappel) – Résoudre les problèmes de
cohérence mémoire sur la
communication de données (en mémoire partagée)
Programmation multitâche
communication de données (en mémoire partagée) – Spécifier les
dépendances entre les traitements
• Contrôler l’ordre d’exécution des tâches » Permet à un thread de
contrôler quand un autre s’exécute » Ex : sémaphore privé (ceux qui
font P sont différent de ceux qui font V ) producteur /
consommateur
• Exécution de section critique » Ex: commandes de périphérique /
du matériel
Programmation multitâche et ordonnancement
» Ex: commandes de périphérique / du matériel » S’assurer qu’on
envoie pas deux commandes disques contraires
– En général : régler les problèmes de concurrence su r l’accès à
une ressource partagée
• logicielle ou matérielle
Pourquoi synchroniser ? (rappel) Résoudre les problèmes de
cohérence mémoire sur la communication de données (en mémoire
partagée)
Programmation multitâche
communication de données (en mémoire partagée) Spécifier les
dépendances entre les traitements
Contrôler l’ordre d’exécution des tâches Permet à un thread de
contrôler quand un autre s’exécute Ex : sémaphore privé (ceux qui
font P sont différent de ceux qui font V )
producteur / consommateur
Exécution de section critique Ex: commandes de périphérique / du
matériel
Programmation multitâche et ordonnancement – EFREI 2011 13
Ex: commandes de périphérique / du matériel S’assurer qu’on envoie
pas deux commandes disques contraires
En général : régler les problèmes de concurrence su r l’accès à une
ressource partagée
Mécanismes de communication – Mémoire partagée, tubes FIFO, boites
aux lettres
Programmation multitâche
– Mémoire partagée, tubes FIFO, boites aux lettres asynchrones,
buffer circulaires…
– Toute communication entre deux tâches utilise à un moment de la
mémoire partagée
• Éventuellement cachée par le noyau » Mécanisme principal à
maîtriser
– Attention aux problèmes «
– Attention aux problèmes « • Une instructions C = plusieurs
instructions assembleur !
» Exemple cours n°1: une variable, deux tâches l’une incrémente,
l’autre décrémente
Mécanismes de communication Mémoire partagée, tubes FIFO, boites
aux lettres
Programmation multitâche
Mémoire partagée, tubes FIFO, boites aux lettres asynchrones,
buffer circulaires…
Toute communication entre deux tâches utilise à un moment de la
mémoire partagée
Éventuellement cachée par le noyau Mécanisme principal à
maîtriser
Attention aux problèmes « cachés »
Attention aux problèmes « cachés » Une instructions C = plusieurs
instructions assembleur !
1: une variable, deux tâches l’une incrémente, l’autre
décrémente
Définitions – A et B sont deux tâches (traitements)
Programmation multitâche
– Sériabilité • A // B indépendant de l’ordonnancement • A // B =
A,B = B,A
– Atomicité • A est atomique par rapport à B si
» A ne peut pas être mis en // avec B » A ne peut pas être préempté
au profit de B
Programmation multitâche et ordonnancement
» A ne peut pas être préempté au profit de B » B ne peut pas
observer d’états intermédiaires dans A pendant l’exécution
de A » A dure un temps nul pour B
A et B sont deux tâches (traitements)
Programmation multitâche
A // B indépendant de l’ordonnancement
A est atomique par rapport à B si A ne peut pas être mis en // avec
B A ne peut pas être préempté au profit de B
Programmation multitâche et ordonnancement – EFREI 2011 15
A ne peut pas être préempté au profit de B B ne peut pas observer
d’états intermédiaires dans A pendant l’exécution
A dure un temps nul pour B
Remarques – Les périodes d’atomicité diminuent le taux de
Programmation multitâche
– Les périodes d’atomicité diminuent le taux de parallélisme
• Elles ne doivent pas faire rater les échéances • Elles doivent
être brèves en multiprocesseur
– L’atomicité évite certaines interactions • Ne résout pas A,B =
B,A • Exemple : Décodage parallèle de code Morse
Programmation multitâche et ordonnancement
Les périodes d’atomicité diminuent le taux de
Programmation multitâche
Les périodes d’atomicité diminuent le taux de
Elles ne doivent pas faire rater les échéances Elles doivent être
brèves en multiprocesseur
L’atomicité évite certaines interactions
Exemple : Décodage parallèle de code Morse
Programmation multitâche et ordonnancement – EFREI 2011 16
Exemple : Décodage parallèle de code Morse
Remarques – Exemple : codage parallèle de code Morse
Programmation multitâche
• Sans précautions : « ….- • Respect de l’atomicité : «
…---
Programmation multitâche et ordonnancement
• Respect de l’ordre: « …---
Section critique (mutex) résout l’atomicité mais pas les problèmes
d’ordre
Exemple : codage parallèle de code Morse
Programmation multitâche
-.--. »
……--- »
---…
---… »
Section critique (mutex) résout l’atomicité mais pas les
Attitude face aux risques d’incohérence – A et B doivent être
atomiques l’un vis
Programmation multitâche
– A et B doivent être atomiques l’un vis • Synchronisation
pessimiste : Prévention (section critique)
» Atomicité : on empêche le problème de survenir
• Synchronisation optimiste : Guérison (estampilles) » On détecte
le problème (données incohérente
• Dépend de la possibilité (probabilité) d’avoir A et B actifs
ensembles ?
» estampilles : peuvent ne pas finir
Programmation multitâche et ordonnancement
» estampilles : peuvent ne pas finir
Attitude face aux risques d’incohérence A et B doivent être
atomiques l’un vis -à-vis de l’autre
Programmation multitâche
A et B doivent être atomiques l’un vis -à-vis de l’autre
Synchronisation pessimiste : Prévention (section critique)
Atomicité : on empêche le problème de survenir
Synchronisation optimiste : Guérison (estampilles) On détecte le
problème (données incohérente cohérentes)
Dépend de la possibilité (probabilité) d’avoir A et B actifs
estampilles : peuvent ne pas finir
Programmation multitâche et ordonnancement – EFREI 2011 18
estampilles : peuvent ne pas finir
Attitude face aux risques d’incohérence – Guérir :
Programmation multitâche
– Guérir : • Copier la date (l’estampille) • Copier les données •
Calculer les nouvelles valeurs
** Début atomicité ** • Copier la date actuelle
» Est-ce que quelqu’un a rechangé l’estampille ?
Programmation multitâche et ordonnancement
• Si elle est inchangée modifier les données et augmenter la
date
** Fin atomicité ** Sinon recommencer
Programmation multitâche
(l’estampille)
Programmation multitâche et ordonnancement – EFREI 2011 19
modifier les données et augmenter la date
Problème avec les sémaphores – Deux tâches A et B et deux
sémaphores S1 et S2
avec M(S1) = M(S2) = 1
avec M(S1) = M(S2) = 1 – La chronologie suivante
• A : P(S1) • B : P(S2) • A : P(S2) /* A est bloquée dans P */ • B
: P(S1) /* B est bloquée dans P */
– Remarque • C’est un problème global
Programmation multitâche et ordonnancement
• C’est un problème global » A est bloquée et c’est B qui peut
faire évoluer la situation » B est bloquée et c’est A qui peut
faire évoluer la situation
La situation ne peut plus évoluer
• On peut s’interbloquer avec un seul sémaphore (interrupt handler
=>TP)
Problème avec les sémaphores Deux tâches A et B et deux sémaphores
S1 et S2
Programmation multitâche
La chronologie suivante
A : P(S2) /* A est bloquée dans P */ B : P(S1) /* B est bloquée
dans P */
Programmation multitâche et ordonnancement – EFREI 2011 20
A est bloquée et c’est B qui peut faire évoluer la situation B est
bloquée et c’est A qui peut faire évoluer la situation
La situation ne peut plus évoluer
On peut s’interbloquer avec un seul sémaphore (interrupt
Solutions – Remède
Programmation multitâche
• Annuler l’un des appels à P • Il faut faire remonter la tâche
dans son code • Il faut pouvoir restaurer les données de la tâche •
Annuler toutes les opérations qu’elle a faite • En pratique :
détection, et destruction des tâches concernées • Même problème
qu’avec les estampilles…
– Prévention
Programmation multitâche et ordonnancement
– Prévention • Problème compliqué mais dans des cas particuliers,
il y a des
solutions simples • Annonces des besoins
» La tâche demande en une seule fois toutes les ressources dont
elle a besoin
Annuler l’un des appels à P
Programmation multitâche
Annuler l’un des appels à P Il faut faire remonter la tâche dans
son code Il faut pouvoir restaurer les données de la tâche Annuler
toutes les opérations qu’elle a faite En pratique : détection, et
destruction des tâches concernées Même problème qu’avec les
estampilles…
Programmation multitâche et ordonnancement – EFREI 2011 21
Problème compliqué mais dans des cas particuliers, il y a des
La tâche demande en une seule fois toutes les ressources dont elle
a
Ressources ordonnées partiellement – La tâche peut faire des
demandes successives pourvu
Programmation multitâche
– La tâche peut faire des demandes successives pourvu qu’elles
portent sur des ressources comparables
– Qu’elles soient faites en suivant une relation d’or dre
– Démonstration • La tâche qui occupe la ressource de plus grand
rang ne peut être
bloquée
» A : P(m1) , P(m2) , P(m3) » B : P(m1) , P(m3) , P(m2)
Ressources ordonnées partiellement La tâche peut faire des demandes
successives pourvu
Programmation multitâche
La tâche peut faire des demandes successives pourvu qu’elles
portent sur des ressources comparables Qu’elles soient faites en
suivant une relation d’or dre
La tâche qui occupe la ressource de plus grand rang ne peut
être
Programmation multitâche et ordonnancement – EFREI 2011 22
La condition n’est pas nécessaire A : P(m1) , P(m2) , P(m3) B :
P(m1) , P(m3) , P(m2)
Sémaphore privé – Quand chaque tâche n’est autorisée qu’à faire une
s eule
Programmation multitâche
– Quand chaque tâche n’est autorisée qu’à faire une s eule des
primitives P ou V
• Le sémaphore est dit privé (emploi particulier)
– Interprétation • Le(s) processus qui fait P attend un signal
du(des) processus qui
fait V
Programmation multitâche et ordonnancement
– Propriétés • Si le processus récepteur est en avance il est
bloqué • Si le signal est émis en avance il est mémorisé
Quand chaque tâche n’est autorisée qu’à faire une s eule
Programmation multitâche
Quand chaque tâche n’est autorisée qu’à faire une s eule
Le sémaphore est dit privé (emploi particulier)
Le(s) processus qui fait P attend un signal du(des) processus
qui
Programmation multitâche et ordonnancement – EFREI 2011 23
Si le processus récepteur est en avance il est bloqué Si le signal
est émis en avance il est mémorisé
Les interruptions – Indique à l’OS l’occurrence d’un évènement
interne ou
externe, attendu ou non
externe, attendu ou non • Interruption hiérarchisée ( différent
niveau de priorité)
– Les instructions machines s’exécutent séquentiellem ent • Saut •
Exception (instruction invalide) • Trap (interruption demandée) •
Interruption (évènement matériel)
– Les interruptions sont le seul moyen pour le systèm e
Programmation multitâche et ordonnancement
– Les interruptions sont le seul moyen pour le systèm e
d’exploitation de reprendre la main de manière forc ée sur le
processeur
• Implémente la préemption via timer (qu’on utilisera en TP)
Indique à l’OS l’occurrence d’un évènement interne ou
Programmation multitâche
Les instructions machines s’exécutent séquentiellem ent
Exception (instruction invalide) Trap (interruption demandée)
Interruption (évènement matériel)
Les interruptions sont le seul moyen pour le systèm e
Programmation multitâche et ordonnancement – EFREI 2011 24
Les interruptions sont le seul moyen pour le systèm e
d’exploitation de reprendre la main de manière forc ée sur
Implémente la préemption via timer (qu’on utilisera en TP)
Atomicité des instructions – Point interruptible
Programmation multitâche
• Le CPU possède un état observable (donc mémorisable) seulement à
des instants précis où les valeurs des registres (registre d’état,
compteur ordinal…) sont valides (stables)
– Une instruction assembleur s’exécute atomiquement • Une
interruption ne peut survenir qu’entre deux instructions
» Attention, l’exécution d’une instruction se fait en plusieurs
cycles
Programmation multitâche et ordonnancement
» Attention, l’exécution d’une instruction se fait en plusieurs
cycles » Atomicité des instructions garantie entre tâches
ordonnancés
préemptivement
Programmation multitâche
Le CPU possède un état observable (donc mémorisable) seulement à
des instants précis où les valeurs des registres (registre d’état,
compteur ordinal…) sont valides (stables)
Une instruction assembleur s’exécute atomiquement Une interruption
ne peut survenir qu’entre deux instructions
Attention, l’exécution d’une instruction se fait en plusieurs
cycles
Programmation multitâche et ordonnancement – EFREI 2011 25
Attention, l’exécution d’une instruction se fait en plusieurs
cycles Atomicité des instructions garantie entre tâches
ordonnancés
Gestion d’interruption – Gestionnaire
– Gestionnaire • Programme appelé par le processeur lorsque
l’interruption est
rencontrée • Chargé de gérer les conséquences de l’occurrence de
l’interruption • Responsable de sauvegarder le contexte d’exécution
avant le
traitement (routine d’interruption) puis de le rétablir » On ne
doit pas perturber l’exécution du programme interrompu
Programmation multitâche et ordonnancement
– Changement de contexte • Opération provoquée par le système à
chaque fois que le
processeur doit être affecté à une tâche autre que celle qu’il
exécutait avant ce changement
Programmation multitâche
Programme appelé par le processeur lorsque l’interruption est
Chargé de gérer les conséquences de l’occurrence de l’interruption
Responsable de sauvegarder le contexte d’exécution avant le
traitement (routine d’interruption) puis de le rétablir
On ne doit pas perturber l’exécution du programme interrompu
Programmation multitâche et ordonnancement – EFREI 2011 26
Changement de contexte ou commutation de tâche Opération provoquée
par le système à chaque fois que le processeur doit être affecté à
une tâche autre que celle qu’il exécutait avant ce changement
Etapes de la gestion des interruptions – Arrivé d’une interruption
non masquée
Programmation multitâche
– Arrivé d’une interruption non masquée – Sauvegarde du contexte
d’exécution de la tâche
courante – Activation du gestionnaire d’interruptions – Traitement
de l’interruption
• En fonction de la nature de l’interruption et des priorités entre
interruptions
Programmation multitâche et ordonnancement
interruptions
– Reprendre la tâche interrompue (ou élire une nouvel le tâche
commutation)
Etapes de la gestion des interruptions Arrivé d’une interruption
non masquée
Programmation multitâche
Arrivé d’une interruption non masquée Sauvegarde du contexte
d’exécution de la tâche
Activation du gestionnaire d’interruptions Traitement de
l’interruption
En fonction de la nature de l’interruption et des priorités
entre
Programmation multitâche et ordonnancement – EFREI 2011 27
Reprendre la tâche interrompue (ou élire une nouvel le
Condition de prise en compte
Programmation multitâche
Condition de prise en compte – Une demande d’interruption n’est
pas
automatiquement traitée dès qu’elle survient • Interruption
incidente n’est pas masquée • CPU est à un point interruptible •
Pas de niveau d’interruption plus prioritaire en attente ou
en
cours de traitement
Programmation multitâche
Condition de prise en compte Une demande d’interruption n’est pas
automatiquement traitée dès qu’elle survient
Interruption incidente n’est pas masquée CPU est à un point
interruptible Pas de niveau d’interruption plus prioritaire en
attente ou en
Programmation multitâche et ordonnancement – EFREI 2011 28
Caractéristiques des tâches – Tâche non- préemptible
qui ne peut pas être interrompue
Programmation multitâche
qui ne peut pas être interrompue – Tâche préemptible : tâche en
cours d’exécution qui
peut être interrompue (au profit d’une autre tâche)
Contraintes sur certaines ressources de calcul • Ressources
multiples ou non
• Ressources réquisitionnables
Caractéristiques des tâches préemptible : tâche en cours
d’exécution
qui ne peut pas être interrompue
Programmation multitâche
qui ne peut pas être interrompue : tâche en cours d’exécution
qui
peut être interrompue (au profit d’une autre tâche)
Contraintes sur certaines ressources de calcul Ressources multiples
ou non
réquisitionnables (CPU)
réquisitionnables (CPU) Signifie que la ressource est
préemptible
réquisitionnables (DSP) préemptible, le traitement peut être
abandonné
Interruptions sous UNIX – Un « signal » désigne une interruption ou
un
Programmation multitâche
– Un « signal » désigne une interruption ou un déroutement
• Soit un évènement externe au process/thread (tâche) » frappe au
clavier, signal émis par un autre thread à l’aide de la
primitive
Kill, signal d’horloge…
• Soit un évènement interne au process/thread (tâche) » Correspond
à une erreur (erreur virgule flottante, protection mémoire…)
– Possible de masquer ces signaux
Programmation multitâche et ordonnancement
– Possible de masquer ces signaux – Signal en attente d’être pris
en compte
• Bit associé dans le registre des signaux en attente est à 1 Si un
autre signal du même type arrive il est perdu ! (voir TP)
Interruptions sous UNIX » désigne une interruption ou un
Programmation multitâche
» désigne une interruption ou un
Soit un évènement externe au process/thread (tâche) frappe au
clavier, signal émis par un autre thread à l’aide de la
primitive
Soit un évènement interne au process/thread (tâche) Correspond à
une erreur (erreur virgule flottante, protection mémoire…)
Possible de masquer ces signaux
Programmation multitâche et ordonnancement – EFREI 2011 30
Possible de masquer ces signaux Signal en attente d’être pris en
compte
Bit associé dans le registre des signaux en attente est à 1 Si un
autre signal du même type arrive il est perdu ! (voir TP)
Interruptions sous UNIX – Prise en compte d’un signal = exécution
d’une fonct ion
Programmation multitâche
– Prise en compte d’un signal = exécution d’une fonct ion
spécifique appelé « handler
• Routine prédéfinie dans le système » Traitement standard ou par
défaut
• Routine mise en place par l’utilisateur pour personnaliser le
traitement de ce signal
» TP n°2
Programmation multitâche et ordonnancement
Interruptions sous UNIX Prise en compte d’un signal = exécution
d’une fonct ion
Programmation multitâche
Prise en compte d’un signal = exécution d’une fonct ion handler
»
Routine prédéfinie dans le système Traitement standard ou par
défaut
Routine mise en place par l’utilisateur pour personnaliser le
Programmation multitâche et ordonnancement – EFREI 2011 31
Système multitâche – Objectif général (système classique)
• Optimisation de l’emploi des ressources
Programmation multitâche
• Optimisation de l’emploi des ressources
– Objectifs temps réel • Produire des résultats (justes) à des
dates données • Gérer des échelles de temps différentes
» Imposée par la cohabitation de périodes différentes
– Rôle de l’OS • Interface avec le matériel
Programmation multitâche et ordonnancement
» Partage du CPU, du disque…
Objectif général (système classique) Optimisation de l’emploi des
ressources
Programmation multitâche
Optimisation de l’emploi des ressources
Produire des résultats (justes) à des dates données Gérer des
échelles de temps différentes
Imposée par la cohabitation de périodes différentes
Interface avec le matériel
Interface avec le matériel Ordonnancement des différentes tâches
Communication entre les tâches (au sens large) Cohabitation de
tâches devant s’ignorer
Partage du CPU, du disque…
Programmation multitâche
Intérêt d’une conception multitâche – Initialement : optimiser
l’utilisation du matériel– Initialement : optimiser l’utilisation
du matériel
• Plusieurs fonctionnalités sur un même ordinateur • Paralléliser
les I / O avec le CPU
Optimisation des temps d’exécution moyen des diverses tâches à
accomplir
– Profiter des multiples ressources de calcul • Architectures
multiprocesseur
Programmation multitâche et ordonnancement
– Simplifier la conception – Traiter des événements
asynchrones
• Interruptions à des instants pas entièrement déterminés Notion
d’importance ou d’échéance
Programmation multitâche
Intérêt d’une conception multitâche l’utilisation du
matériell’utilisation du matériel
Plusieurs fonctionnalités sur un même ordinateur Paralléliser les I
/ O avec le CPU
Optimisation des temps d’exécution moyen des diverses
Profiter des multiples ressources de calcul Architectures
multiprocesseur
Programmation multitâche et ordonnancement – EFREI 2011 33
Traiter des événements asynchrones Interruptions à des instants pas
entièrement déterminés
Notion d’importance ou d’échéance
Programmation multitâche
Intérêt d’une conception multitâche – Gérer un objectif temps -–
Gérer un objectif temps -
• Des échelles de temps différentes » Traitements courts passent
avant les longs
• Des degrés de criticité différents » Les traitements critiques
passent en premier (si on ne peut pas faire
autrement)
Programmation multitâche
Intérêt d’une conception multitâche -réel global-réel global
Des échelles de temps différentes Traitements courts passent avant
les longs
Des degrés de criticité différents Les traitements critiques
passent en premier (si on ne peut pas faire
Objectifs souvent contradictoires
Objectifs souvent contradictoires Maximiser le nombre de
fonctionnalités correctement acquittées
dimensionnement)
Autres caractéristiques des tâches – Niveau d’urgence
• Exprime l’urgence des données produites par la tâche• Exprime
l’urgence des données produites par la tâche • Définie par
l’échéance de la tâche
– Niveau d’importance • Permet d’introduire, pour un ensemble de
tâches, la capacité de
résister aux fautes temporelles de certaines d’entre elles
(défaillance)
• Le système doit pouvoir supprimer l’exécution de certaines
tâches
Programmation multitâche et ordonnancement
tâches » Continuer à exécuter les tâches primordiales (mode
dégradé)
– Permet de distinguer deux tâches de même importance ou de même
urgence
Programmation multitâche
Autres caractéristiques des tâches
Exprime l’urgence des données produites par la tâcheExprime
l’urgence des données produites par la tâche Définie par l’échéance
de la tâche
Permet d’introduire, pour un ensemble de tâches, la capacité de
résister aux fautes temporelles de certaines d’entre elles
Le système doit pouvoir supprimer l’exécution de certaines
Programmation multitâche et ordonnancement – EFREI 2011 35
Continuer à exécuter les tâches primordiales (mode dégradé)
Permet de distinguer deux tâches de même importance ou de même
urgence
Programmation multitâche
• Doivent toujours être assurées (garantir des propriétés de
– Essentielles– Essentielles • Doivent être assurées autant que
possible
» i.e. au moins de temps en temps (garantir des propriétés de
Dans tous les cas, pour un systèmes temps assurer la ponctualité de
tous les traitements
– Sûreté
– Sûreté • Montrer qu’une chose ne peut pas se produire
– Vivacité • Montrer qu’une chose se produira au bout d’un certain
temps
– Ponctualité • Montrer que les traitements se terminent à
temps
Programmation multitâche
être assurées (garantir des propriétés de sûreté)
Doivent être assurées autant que possible i.e. au moins de temps en
temps (garantir des propriétés de vivacité)
Dans tous les cas, pour un systèmes temps -réel, il faut de tous
les traitements
Programmation multitâche et ordonnancement – EFREI 2011 36
Montrer qu’une chose ne peut pas se produire
Montrer qu’une chose se produira au bout d’un certain temps
Montrer que les traitements se terminent à temps
Programmation multitâche
T2
Niveau d’urgence
Ordonnancer correctement un système temps réel multitâche – 100%
des tâches critiques doivent respecter leurs – 100% des tâches
critiques doivent respecter leurs
contraintes (temporelles) • preuve
– Différence entre système temps réel dur et mou
Programmation multitâche et ordonnancement
– Différence entre système temps réel dur et mou • Dur : aucune
faute temporelle acceptée
» Dégâts catastrophiques
• Mou : une faute temporelle est acceptable » Dégâts dont le coût
est estimée tolérable rapportée à sa
probabilité d’occurence
Ordonnancer correctement un système temps réel
100% des tâches critiques doivent respecter leurs 100% des tâches
critiques doivent respecter leurs contraintes (temporelles)
Pour les tâches essentielles faire au mieux (best effort)
Différence entre système temps réel dur et mou
Programmation multitâche et ordonnancement – EFREI 2011 38
Différence entre système temps réel dur et mou Dur : aucune faute
temporelle acceptée
Mou : une faute temporelle est acceptable Dégâts dont le coût est
estimée tolérable rapportée à sa
Ordonnancement
Introduction – L’application est un ensemble de n tâches qu’on app
elle
système de tâchessystème de tâches • Départ simultané (même 1
– Terminologie (rappel) • L’ordonnancement est l’organisation de
l’exécution des tâches
sur le(s) CPU(s) du système » Séquencement , entrelacement…
Programmation multitâche et ordonnancement
• La politique d’ordonnancement l’exécution des tâches sur les
CPU(s) du système
Ordonnancement
L’application est un ensemble de n tâches qu’on app elle
Départ simultané (même 1er date de réveil) ou échelonné
est l’organisation de l’exécution des tâches sur le(s) CPU(s) du
système
Séquencement , entrelacement…
Programmation multitâche et ordonnancement – EFREI 2011
politique d’ordonnancement est la règle d’organisation de
l’exécution des tâches sur les CPU(s) du système
Ordonnancement
Introduction – Deux travaux à exécuter
• Travail A : Durée = 270 , Échéance = 320• Travail A : Durée = 270
, Échéance = 320 • Travail B : Durée = 15 , Échéance = 21
– Deux ressources différentes • P1 : vitesse = 1 , durée
commutation = 1 , priorité = à l’échéance • P2 : vitesse = 10 ,
durée commutation = 0 , priorité = au premier
TA arrive avant TB à t = 0…
Programmation multitâche et ordonnancement
TATBP1
P2
Ordonnancement
Deux travaux à exécuter : Durée = 270 , Échéance = 320: Durée = 270
, Échéance = 320 : Durée = 15 , Échéance = 21
Deux ressources différentes : vitesse = 1 , durée commutation = 1 ,
priorité = à l’échéance : vitesse = 10 , durée commutation = 0 ,
priorité = au premier
Programmation multitâche et ordonnancement – EFREI 2011 40
t320
TA
Ordonnancement
Durée d’exécution ( noté C ) – Temps nécessaire à un processeur
pour exécuter le c ode
d’un travail sans interruptiond’un travail sans interruption • La
durée d’exécution dépend de la vitesse du processeur • La durée
d’exécution est théorique (non constante en pratique)
» Durée maximale d’exécution (worst case execution time ou » Durée
minimale d’exécution (best case execution time)
En général, le temps d’exécution d’un travail correspond au
WCET
– Mode d’évaluation de la durée d’exécution
Programmation multitâche et ordonnancement
– Mode d’évaluation de la durée d’exécution • Mesure en-ligne,
analyse hors
– Difficultés • Complexité et multitude des chemins d’exécution •
Complexité des processeurs
Ordonnancement
Durée d’exécution ( noté C ) Temps nécessaire à un processeur pour
exécuter le c ode d’un travail sans interruptiond’un travail sans
interruption
La durée d’exécution dépend de la vitesse du processeur La durée
d’exécution est théorique (non constante en pratique)
Durée maximale d’exécution (worst case execution time ou WCET)
Durée minimale d’exécution (best case execution time)
En général, le temps d’exécution d’un travail correspond au
WCET
Mode d’évaluation de la durée d’exécution
Programmation multitâche et ordonnancement – EFREI 2011 41
Mode d’évaluation de la durée d’exécution ligne, analyse
hors-ligne
Complexité et multitude des chemins d’exécution Complexité des
processeurs
Ordonnancement
Attributs temporels d’un travail (job) – Date de début au plus tôt
(demande) : Td
• Instant où un travail devient prêt (arrival time ou release
time)• Instant où un travail devient prêt (arrival time ou release
time) – Date de fin au plus tard ( échéance
• Date avant laquelle l’exécution d’un travail doit être terminé
(deadline) – Durée d’exécution d’un travail i (besoin) : Ci
Paramètres dérivés – Délai critique (fenêtre temporelle)
• Délai maximum acceptable pour l’exécution d’une tâche – Date de
début au plus tard
Programmation multitâche et ordonnancement
– Date de début au plus tard – Durée jusqu’à la date de début au
plus tard (laxité ) – Date de fin au plus tôt – Date de début et de
fin d’exécution du travail
• Préemptions possibles
Ordonnancement
Attributs temporels d’un travail (job) Date de début au plus tôt
(demande) : Td
Instant où un travail devient prêt (arrival time ou release
time)Instant où un travail devient prêt (arrival time ou release
time) échéance ) : Tf
Date avant laquelle l’exécution d’un travail doit être terminé
(deadline) Durée d’exécution d’un travail i (besoin) : Ci
Délai critique (fenêtre temporelle) Délai maximum acceptable pour
l’exécution d’une tâche
Programmation multitâche et ordonnancement – EFREI 2011 42
Durée jusqu’à la date de début au plus tard (laxité )
Date de début et de fin d’exécution du travail
Ordonnancement
Cas non-préemptif – Marge statique : Ms = (Tf – Marge statique : Ms
= (Tf
• Ms ≥ 0 • Si Ms = 0, pas de choix
Ci
Ordonnancement
Marge statique : Ms = (Tf - Td) - CiMarge statique : Ms = (Tf - Td)
- Ci
Programmation multitâche et ordonnancement – EFREI 2011 43
Ordonnancement
Cas préemptif – Marge dynamique ou laxité : Md = (Tf – Marge
dynamique ou laxité : Md = (Tf
• Tc = instant courant • Ri = durée d’exécution restante du travail
i • Md n’évolue pas pour le travail actif • Md évolue dynamiquement
pour les travaux non actifs
i
i
Ordonnancement
Marge dynamique ou laxité : Md = (Tf – Tc) – RiMarge dynamique ou
laxité : Md = (Tf – Tc) – Ri
Ri = durée d’exécution restante du travail i Md n’évolue pas pour
le travail actif Md évolue dynamiquement pour les travaux non
actifs
Programmation multitâche et ordonnancement – EFREI 2011 44
Ordonnancement
Notion de tâche – Une tâche est une entité qui crée des travaux
(job
release)release) • La tâche s’active et doit exécuter un travail
(job)
– Trois classes majeures • Périodique : Crée un travail toutes les
périodes T ( > 0 )
» Échéance implicite : Échéance = période » Échéance contrainte :
Échéance
Programmation multitâche et ordonnancement
• Sporadiques : créations de travaux séparées par un intervalle de
temps minimal (connue)
• Apériodique : Modèle le plus général, les créations de travaux
doivent quand même être connues
Ordonnancement
Une tâche est une entité qui crée des travaux (job
a tâche s’active et doit exécuter un travail (job)
: Crée un travail toutes les périodes T ( > 0 ) Échéance
implicite : Échéance = période Échéance contrainte : Échéance ≤
période
Programmation multitâche et ordonnancement – EFREI 2011 45
: créations de travaux séparées par un intervalle de temps minimal
(connue)
: Modèle le plus général, les créations de travaux doivent quand
même être connues
Ordonnancement
Période d’étude (cas périodique) – L’exécution dure indéfiniment
mais le comportement de – L’exécution dure indéfiniment mais le
comportement de
la configuration est périodique
– Période d’étude est l’intervalle [ 0 , PPCM ( Pi ) ] • Pi =
période de toutes les tâches • Uniquement pour le cas périodique à
départ simultané
Programmation multitâche et ordonnancement
Ordonnancement
Période d’étude (cas périodique) L’exécution dure indéfiniment mais
le comportement de L’exécution dure indéfiniment mais le
comportement de la configuration est périodique
est l’intervalle [ 0 , PPCM ( Pi ) ] Pi = période de toutes les
tâches Uniquement pour le cas périodique à départ simultané
Programmation multitâche et ordonnancement – EFREI 2011 46
Ordonnancement
Plan d’ordonnancement – C’est une méthode de prévision– C’est une
méthode de prévision
ressources (phase de conception) – Un ordonnancement est dit
contraintes temporelles sont
Ordonnancement
prévision pour l’allocation des prévision pour l’allocation des
ressources (phase de conception) Un ordonnancement est dit optimal
si toutes les contraintes temporelles sont respectées
Programmation multitâche et ordonnancement – EFREI 2011 47
Ordonnancement
Plan d’ordonnancement – Il y a surcharge lorsque le volume des
tâches à – Il y a surcharge lorsque le volume des tâches à
ordonnancer est tel que tous les ordonnancements conduisent au non
respect d’au moins une tâche
• Il n’existe pas d’ordonnancement optimal
– Un algorithme d’ordonnancement est dit pour une classe de
problème donnée, il produit des ordonnancements optimaux
Programmation multitâche et ordonnancement
Ordonnancement
lorsque le volume des tâches à lorsque le volume des tâches à
ordonnancer est tel que tous les ordonnancements
au non respect d’au moins une tâche Il n’existe pas
d’ordonnancement optimal
d’ordonnancement est dit optimal , si pour une classe de problème
donnée, il produit des ordonnancements optimaux
Programmation multitâche et ordonnancement – EFREI 2011 48
ordonnancements optimaux
Types d’algorithmes d’ordonnancement – Statique– Statique
• Le plan d’ordonnancement est décidé avant exécution ( » La
séquence d’ordonnancement est pré
caractéristiques temporelles des tâches
– Dynamique • Le plan d’ordonnancement varie pendant l’exécution
(
» Les décisions d’ordonnancement sont prises au fil de l’exécution
de l’application par l’ordonnanceur
Programmation multitâche et ordonnancement
• Non préemptifs ou préemptifs • Priorité fixe (statique ou
dynamique)
Ordonnancement
Types d’algorithmes d’ordonnancement
Le plan d’ordonnancement est décidé avant exécution (hors-ligne) La
séquence d’ordonnancement est pré-calculée sur la base de toutes
les caractéristiques temporelles des tâches
Le plan d’ordonnancement varie pendant l’exécution (en-ligne) Les
décisions d’ordonnancement sont prises au fil de l’exécution de
l’application par l’ordonnanceur
Programmation multitâche et ordonnancement – EFREI 2011 49
l’application par l’ordonnanceur
Non préemptifs ou préemptifs Priorité fixe (statique ou
dynamique)
Ordonnancement Avantages / inconvénients – Hors ligne
• Nécessite la connaissance a priori du système et de ses
caractéristiques temporelles (dates de réveil
figés)caractéristiques temporelles (dates de réveil figés)
» Manque de flexibilité mais grande prédictibilité (flot
d’instruction unique)
• Adapté à un modèle périodique » Calcul de l’ordonnancement sur un
cycle (ppcm des périodes des tâches)
ordonnanceur cyclique (programmation en boucle)
• Simplicité de l’ordonnanceur » faibles overheads d’exécution
(surcoût d’exécution)
• Efficacité calculatoire non demandée pour le calcul de la
séquence
Programmation multitâche et ordonnancement
• Efficacité calculatoire non demandée pour le calcul de la
séquence d’ordonnancement
» Mise en œuvre d’algorithmes optimaux + des contraintes
additionnelles peuvent être prises en compte (précédence entre
tâches, synchronisation entre tâches, réveils à des dates
arbitraires, etc.)
• Régularité d’exécution » Rigide (ne peut s’adapter à
l’environnement)
Ordonnancement Avantages / inconvénients
Nécessite la connaissance a priori du système et de ses
caractéristiques temporelles (dates de réveil
figés)caractéristiques temporelles (dates de réveil figés)
Manque de flexibilité mais grande prédictibilité (flot
d’instruction unique)
Adapté à un modèle périodique Calcul de l’ordonnancement sur un
cycle (ppcm des périodes des tâches) ordonnanceur cyclique
(programmation en boucle)
Simplicité de l’ordonnanceur faibles overheads d’exécution (surcoût
d’exécution)
Efficacité calculatoire non demandée pour le calcul de la
séquence
Programmation multitâche et ordonnancement – EFREI 2011 50
Efficacité calculatoire non demandée pour le calcul de la
séquence
Mise en œuvre d’algorithmes optimaux + des contraintes
additionnelles peuvent être prises en compte (précédence entre
tâches, synchronisation entre tâches, réveils à des dates
arbitraires, etc.)
Rigide (ne peut s’adapter à l’environnement)
Ordonnancement Avantages / inconvénients – En ligne
• Flexible » Adapté aux systèmes dynamiques et évolutifs (capable
de prendre une
décision à un instant t)
• Efficacité calculatoire requise » Politiques d’ordonnancement
simples
• Difficulté à prendre en compte des contraintes variées » Analyse
délicate et souvent pessimiste » A priori moins sûr besoin d’une
preuve
• Non oisif
Programmation multitâche et ordonnancement
• Non oisif » Le processeur est toujours utilisé s’il y a au moins
une tâche prête
Ordonnancement Avantages / inconvénients
Adapté aux systèmes dynamiques et évolutifs (capable de prendre
une
Efficacité calculatoire requise Politiques d’ordonnancement
simples
Difficulté à prendre en compte des contraintes variées Analyse
délicate et souvent pessimiste
besoin d’une preuve
Programmation multitâche et ordonnancement – EFREI 2011 51
Le processeur est toujours utilisé s’il y a au moins une tâche
prête
Ordonnancement
• Types : séquentielles, parallèles• Types : séquentielles,
parallèles • Relations : mutuellement dépendantes, indépendantes •
Valeurs : identiques / différentes, constantes / dépendantes
de
l’instant de terminaison • Abandon : si violation de contraintes
exigée, autorisée, interdite
– Sur les ressources • Multiplicité : une ou plusieurs
(équivalentes ou non) • Mode d’accès : centralisé ou distribué
(ressources mémoires)
Programmation multitâche et ordonnancement
» Toujours possible (avec ou sans perte) » Possible par moment »
Impossible
Ordonnancement
Abandon : si violation de contraintes exigée, autorisée,
interdite
Multiplicité : une ou plusieurs (équivalentes ou non) Mode d’accès
: centralisé ou distribué (ressources mémoires)
Programmation multitâche et ordonnancement – EFREI 2011 52
Mode d’accès : centralisé ou distribué (ressources mémoires)
Toujours possible (avec ou sans perte)
Ordonnancement
Modèles – hypothèses – Sur les lois évènementielles– Sur les lois
évènementielles
• Connues totalement ou partiellement (non temps • Prédéterminées
ou statistiques
– Sur les lois d’activations des tâches • Instants d’activations
des tâches • Instants d’accès aux ressources • Instants délimitant
les fenêtres de réquisitions possibles /
Programmation multitâche et ordonnancement
Ordonnancement
Sur les lois évènementiellesSur les lois évènementielles Connues
totalement ou partiellement (non temps-réel) Prédéterminées ou
statistiques
Sur les lois d’activations des tâches Instants d’activations des
tâches Instants d’accès aux ressources Instants délimitant les
fenêtres de réquisitions possibles /
Programmation multitâche et ordonnancement – EFREI 2011 53
Instants délimitant les fenêtres de réquisitions possibles /
Ordonnancement
Modèles – hypothèses – Un énoncé de problème = un choix parmi
toutes ces – Un énoncé de problème = un choix parmi toutes
ces
hypothèses • Présentation de diverses classes de problème avec des
solutions
connues, souvent optimales (cadre hypothèse / contraintes)
• Dans la suite : » H1 = hypothèses issues de l’énoncé du problème
: identifie la classe du
problème
Programmation multitâche et ordonnancement
problème » H2 = condition sur les données quantitatives du problème
Hypothèses de faisabilité à vérifier
Ordonnancement
Un énoncé de problème = un choix parmi toutes ces Un énoncé de
problème = un choix parmi toutes ces
Présentation de diverses classes de problème avec des solutions
connues, souvent optimales (cadre hypothèse / contraintes)
H1 = hypothèses issues de l’énoncé du problème : identifie la
classe du
Programmation multitâche et ordonnancement – EFREI 2011 54
H2 = condition sur les données quantitatives du problème Hypothèses
de faisabilité à vérifier
Algorithmes d’ordonnancement
Algorithmes connus – Algorithmes de bases– Algorithmes de
bases
• Les autres sont pour la plupart une combinaison d’entre eux
– Statiques • FP (priorité fixe) • RMS
– Dynamiques • FCFS (Premier arrivé / premier Servi)
Programmation multitâche et ordonnancement
• FCFS (Premier arrivé / premier Servi) • RR (tourniquet) • EDF
(priorité à l’échéance la plus proche) • LLF (priorité à la plus
petite laxité)
Algorithmes d’ordonnancement
Les autres sont pour la plupart une combinaison d’entre eux
FCFS (Premier arrivé / premier Servi)
Programmation multitâche et ordonnancement – EFREI 2011 55
FCFS (Premier arrivé / premier Servi)
EDF (priorité à l’échéance la plus proche) LLF (priorité à la plus
petite laxité)
Algorithmes d’ordonnancement statique
Ordonnancement préemptif à priorité fixe (FP) – Les tâches ont une
priorité fixe – La tâche de plus haute priorité prend la main– La
tâche de plus haute priorité prend la main
• Doit être en mesure de s’exécuter • Préemption possible
– Exemple
Programmation multitâche et ordonnancement
Algorithmes d’ordonnancement statique
Ordonnancement préemptif à priorité fixe (FP) Les tâches ont une
priorité fixe La tâche de plus haute priorité prend la mainLa tâche
de plus haute priorité prend la main
Doit être en mesure de s’exécuter
a : Priorité 1
b : Priorité 2
b : Priorité 2
Algorithmes d’ordonnancement statique
Ordonnancement préemptif à priorité fixe (FP) – Très proche du HW (
E/S asynchrones )
• Ordonnancement peut être fait au niveau matériel
– Ponctualité pour une tâche • Pour les autres ?
– Peu de sûreté – Peu de vivacité
• Si beaucoup de tâches de haute priorité risque de famine
Programmation multitâche et ordonnancement
• Amélioration des défauts » Changement possible des priorités en
ligne (Unix / Windows)
– Les analyses restent compliquées pour exercer des contrôles sur
les temps de traitements
• => système classique car pas de notion d’urgence
Algorithmes d’ordonnancement statique
Ordonnancement préemptif à priorité fixe (FP) Très proche du HW (
E/S asynchrones )
Ordonnancement peut être fait au niveau matériel
Ponctualité pour une tâche
Si beaucoup de tâches de haute priorité risque de famine
Programmation multitâche et ordonnancement – EFREI 2011 57
Changement possible des priorités en ligne (Unix / Windows)
Les analyses restent compliquées pour exercer des contrôles sur les
temps de traitements
=> système classique car pas de notion d’urgence
Algorithmes d’ordonnancement statique
RMS (Rate Monotonic Scheduling) – Inventé par Liu & Layland–
Inventé par Liu & Layland – Hypothèse du modèle (H1)
• Algorithme à priorité fixe (constante au cours du temps) •
Préemption possible • Chaque tâche est périodique • Pas de
dépendances entre les tâches • L’échéance est la période
Programmation multitâche et ordonnancement
– Hypothèse de faisabilité (H2) • Existe une condition suffisante
(CS)
» Borne théorique correspondant au pire des cas
• Ordonnancement sûr si critère vérifié
Algorithmes d’ordonnancement statique
RMS (Rate Monotonic Scheduling) Inventé par Liu &
LaylandInventé par Liu & Layland Hypothèse du modèle (H1)
Algorithme à priorité fixe (constante au cours du temps)
Chaque tâche est périodique Pas de dépendances entre les
tâches
Programmation multitâche et ordonnancement – EFREI 2011 58
La priorité est l’inverse de la période
Hypothèse de faisabilité (H2) Existe une condition suffisante
(CS)
Borne théorique correspondant au pire des cas
Ordonnancement sûr si critère vérifié
Algorithmes d’ordonnancement statique
RMS (Rate Monotonic Scheduling) – Critère théorique
• n tâches• n tâches • Ci = durée d’exécution • Ti = période =
échéance de chaque travail
• Analyse du taux d’occupation du CPU (W) : • Si W ≤ U(n) , RMS est
optimal
Programmation multitâche et ordonnancement
Algorithmes d’ordonnancement statique
RMS (Rate Monotonic Scheduling)
Ti = période = échéance de chaque travail
Analyse du taux d’occupation du CPU (W) : U(n) , RMS est
optimal
Programmation multitâche et ordonnancement – EFREI 2011 59
Algorithmes d’ordonnancement statique
RMS (Rate Monotonic Scheduling)
Programmation multitâche et ordonnancement
– Pour W entre CS et CN : impossible de savoir s’il y a une
solution ou non
• Il faut réaliser un plan d’ordonnancement sur une période d’étude
« à la main »
Algorithmes d’ordonnancement statique
RMS (Rate Monotonic Scheduling)
Condition nécessaire : W ≤ 1 (sinon surcharge) Condition suffisante
: W ≤ U(n)
Programmation multitâche et ordonnancement – EFREI 2011 60
Pour W entre CS et CN : impossible de savoir s’il y a
Il faut réaliser un plan d’ordonnancement sur une période
Algorithmes d’ordonnancement statique
Conclusion RMS – Avantages– Avantages
• Peut être étendu à une tâche apériodique • Peut être étendu à la
surcharge
» Les tâches de priorité haute ne sont pas impactées par les tâches
de priorité basse
• Simple à implémenter » Très proche de la programmation en
boucle
– Inconvénients
– Inconvénients • Hypothèses très simples (rarement rencontrées) •
Famine si bug dans une tâche de haute priorité
» Vérifier le temps pris par chaque tâche
Algorithmes d’ordonnancement statique
Peut être étendu à une tâche apériodique Peut être étendu à la
surcharge
Les tâches de priorité haute ne sont pas impactées par les tâches
de
Très proche de la programmation en boucle
Programmation multitâche et ordonnancement – EFREI 2011 61
Hypothèses très simples (rarement rencontrées) Famine si bug dans
une tâche de haute priorité
Vérifier le temps pris par chaque tâche
Algorithmes d’ordonnancement statique
Priorité et synchronisation – Possibilité d’inter -blocage–
Possibilité d’inter -blocage
• Si une tâche moins prioritaire prend un mutex et qu’une tâche
plus prioritaire le demande ensuite
– Solution : héritage de priorité • Le détenteur du verrou hérite
de la priorité du demandeur jusqu’à
ce qu’il libère le verrou • Dans un système important : toutes les
tâches finissent souvent
à la même priorité
Programmation multitâche et ordonnancement
Algorithmes d’ordonnancement statique
Priorité et synchronisation blocageblocage
Si une tâche moins prioritaire prend un mutex et qu’une tâche plus
prioritaire le demande ensuite
Solution : héritage de priorité Le détenteur du verrou hérite de la
priorité du demandeur jusqu’à
Dans un système important : toutes les tâches finissent
souvent
Programmation multitâche et ordonnancement – EFREI 2011 62
Complexifie l’analyse d’ordonnancement
Algorithmes d’ordonnancement dynamique
Premier arrivé / premier Servi (First Come/First Se rved) –
Avantages
• Très simple et très rudimentaire• Très simple et très
rudimentaire » Non préemptif
• Vivacité (si les tâches se terminent bien sûr…)
– Inconvénients • Ponctualité (=> système classique)
» peut pénaliser les tâches courtes si une tâche longue les
précède
• Sécurité
Programmation multitâche et ordonnancement
– Utile pour garder un ordre de traitement implicite ( pour les
E/S)
• Spooler d’impression
– FCFS est souvent la stratégie « beaucoup de ressources (mémoire,
ports TCP/IP…)
Algorithmes d’ordonnancement dynamique
Très simple et très rudimentaireTrès simple et très
rudimentaire
Vivacité (si les tâches se terminent bien sûr…)
Ponctualité (=> système classique) peut pénaliser les tâches
courtes si une tâche longue les précède
Programmation multitâche et ordonnancement – EFREI 2011 63
Utile pour garder un ordre de traitement implicite ( pour
FCFS est souvent la stratégie « par défaut » pour beaucoup de
ressources (mémoire, ports TCP/IP…)
Algorithmes d’ordonnancement dynamique
Plus court d’abord – Avantages
• Très simple et très rudimentaire (Non préemptif)• Très simple et
très rudimentaire (Non préemptif) • Vivacité (si les tâches se
terminent bien sûr…)
– Inconvénients • Ponctualité (=> système classique)
• Sécurité • Impose de connaître la durée des tâches
Programmation multitâche et ordonnancement
• Impose de connaître la durée des tâches » Ce qu’on ne connait pas
forcément (système classique)
– Temps le plus court d’abord • Version du « plus court d’abord •
Préemption lorsqu’une tâche de temps d’exécution inférieur
devient prête
Algorithmes d’ordonnancement dynamique
Très simple et très rudimentaire (Non préemptif)Très simple et très
rudimentaire (Non préemptif) Vivacité (si les tâches se terminent
bien sûr…)
Ponctualité (=> système classique) Les tâches longues sont
pénalisées
Impose de connaître la durée des tâches
Programmation multitâche et ordonnancement – EFREI 2011 64
Impose de connaître la durée des tâches Ce qu’on ne connait pas
forcément (système classique)
Temps le plus court d’abord plus court d’abord » avec
préemption
Préemption lorsqu’une tâche de temps d’exécution inférieur
Algorithmes d’ordonnancement dynamique
Round Robin (tourniquet) – On partage le temps de façon «
les tâches en mesure de s’exécuter – On partage le temps de façon
«
les tâches en mesure de s’exécuter • On donne la main à une tâche
pour (au plus) «
temps (quantum) • Après consommation de son quantum de temps, la
tâche est
placée en fin de la file d’attente des tâches prêtes
– Avantages • Vivacité • Paralléliser les I/O et les
traitements
Programmation multitâche et ordonnancement
Algorithmes d’ordonnancement dynamique
Round Robin (tourniquet) On partage le temps de façon « équitable »
entre toutes les tâches en mesure de s’exécuter On partage le temps
de façon « équitable » entre toutes les tâches en mesure de
s’exécuter
On donne la main à une tâche pour (au plus) « K » unités de
Après consommation de son quantum de temps, la tâche est placée en
fin de la file d’attente des tâches prêtes
Paralléliser les I/O et les traitements
Programmation multitâche et ordonnancement – EFREI 2011 65
Paralléliser les I/O et les traitements
Algorithmes d’ordonnancement dynamique
• Ponctualité (=> système classique) • Les performances
dépendent de la taille du quantum de temps
» Trop grand une tâche peut attendre longtemps pour avoir le
processeur (temps de réponse)
» Trop petit multiplie les commutations de contexte jusqu’à les
rendre non négligeables
– En pratique, RR est couplé avec priorité fixe
Programmation multitâche et ordonnancement
Algorithmes d’ordonnancement dynamique
Ponctualité (=> système classique) Les performances dépendent de
la taille du quantum de temps
ne tâche peut attendre longtemps pour avoir le processeur (temps de
réponse)
multiplie les commutations de contexte jusqu’à les rendre non
négligeables
En pratique, RR est couplé avec priorité fixe
Programmation multitâche et ordonnancement – EFREI 2011 66
En pratique, RR est couplé avec priorité fixe
Algorithmes d’ordonnancement dynamique
EDF (Earliest Deadline First) – Hypothèse de modèle– Hypothèse de
modèle
• Dynamique • Tâche apériodique
» Inclus les problèmes périodiques
• Pas de dépendance entre tâche • Échéances connues • Durées
inconnues • La priorité est l’inverse de l’échéance relative
Programmation multitâche et ordonnancement
• La priorité est l’inverse de l’échéance relative •
Préemption
– Hypothèse de faisabilité • Optimal si pas de surcharge ( W
Algorithmes d’ordonnancement dynamique
EDF (Earliest Deadline First)
Inclus les problèmes périodiques
La priorité est l’inverse de l’échéance relative
Programmation multitâche et ordonnancement – EFREI 2011 67
La priorité est l’inverse de l’échéance relative
Hypothèse de faisabilité Optimal si pas de surcharge ( W ≤ 1
)
Algorithmes d’ordonnancement dynamique
• Dynamique• Dynamique • Tâche apériodique
» Inclus les problèmes périodiques
• Pas de dépendance entre tâche • Échéances connues • Durées
d’exécution connues • La priorité est l’inverse de la laxité
Programmation multitâche et ordonnancement
» En ligne, l’ordonnanceur calcule la laxité et exécute celle avec
la plus petite
• Préemption
Algorithmes d’ordonnancement dynamique
Inclus les problèmes périodiques
Pas de dépendance entre tâche
Durées d’exécution connues La priorité est l’inverse de la
laxité
Programmation multitâche et ordonnancement – EFREI 2011 68
En ligne, l’ordonnanceur calcule la laxité et exécute celle avec la
plus petite
Optimal si pas de surcharge ( W ≤ 1 )
Algorithmes d’ordonnancement dynamique
Différence entre EDF et LLF – si les valeurs de laxité utilisées
sont celles qui sont – si les valeurs de laxité utilisées sont
celles qui sont
calculées aux dates de réveil des tâches • Ordonnancement
équivalent
– si les valeurs de laxité sont calculées à chaque in stant • LLF
entraine beaucoup plus de changement de contexte
» Laxité de la tâche qui s’exécute demeure constante alors que
celles des tâches prêtes diminuent
Programmation multitâche et ordonnancement
Algorithmes d’ordonnancement dynamique
Différence entre EDF et LLF si les valeurs de laxité utilisées sont
celles qui sont si les valeurs de laxité utilisées sont celles qui
sont calculées aux dates de réveil des tâches
Ordonnancement équivalent
si les valeurs de laxité sont calculées à chaque in stant LLF
entraine beaucoup plus de changement de contexte
Laxité de la tâche qui s’exécute demeure constante alors que celles
des tâches prêtes diminuent
Programmation multitâche et ordonnancement – EFREI 2011 69
Algorithmes d’ordonnancement dynamique
presque jamais vérifiées • Préemption
» Prends un certain temps
• Intégration de tâches critiques / non critiques » Souvent
surcharge
• L’indépendance des traitements » Partage de ressources dont
l’utilisation n’est possible qu’en exclusion
Programmation multitâche et ordonnancement
» Partage de ressources dont l’utilisation n’est possible qu’en
exclusion mutuelle : ressources critiques
» Contraintes de précédence qui expriment les relations de
synchronisation et de communication entre les tâches
graphes de dépendances
Intégration de tâches critiques / non critiques
L’indépendance des traitements Partage de ressources dont
l’utilisation n’est possible qu’en exclusion
Programmation multitâche et ordonnancement – EFREI 2011 70
Partage de ressources dont l’utilisation n’est possible qu’en
exclusion mutuelle : ressources critiques Contraintes de précédence
qui expriment les relations de synchronisation et de communication
entre les tâches
raphes de dépendances
Ordonnancement multiprocesseur
Ordonnancement sur multiprocesseur – A tout moment t– A tout moment
t
• Un travail est exécuté par au plus un processeur • Un processeur
exécute au plus un travail
– Ordonnancement non- accumulatif • Cela complexifie énormément le
problème par rapport au
monoprocesseur
Ordonnancement sur multiprocesseur
Un travail est exécuté par au plus un processeur Un processeur
exécute au plus un travail
accumulatif Cela complexifie énormément le problème par rapport
au
Programmation multitâche et ordonnancement – EFREI 2011 71
Ordonnancement multiprocesseur
Ordonnancement sur multiprocesseur – Les latences ne sont plus
négligeables– Les latences ne sont plus négligeables
• Communication, migrations
– En multiprocesseur • Nécessité de « connaître le futur
Programmation multitâche et ordonnancement
• Nécessité de « connaître le futur optimaux… (Global EDF non
optimal)
• Différentes stratégies » Partitionnement (migrations interdites)
» Algorithmes globaux
Ordonnancement multiprocesseur
Communication, migrations
Programmation multitâche et ordonnancement – EFREI 2011 72
connaître le futur » pour ordonnancements optimaux… (Global EDF non
optimal)
Partitionnement (migrations interdites)
Ordonnancement multiprocesseur
Relations entre les travaux – Travaux peuvent être reliés par un
graphe de – Travaux peuvent être reliés par un graphe de
dépendance (ou graphe de précédence) • Exprime précédence et
concurrence • Accès concurrents aux ressources,
sérialisations
Programmation multitâche et ordonnancement
Ordonnancement multiprocesseur
Relations entre les travaux Travaux peuvent être reliés par un
graphe de Travaux peuvent être reliés par un