Title: Chapitre 2 Les principes de base des excutifs multitches
1Chapitre 2Les principes de base des exécutifs
multi-tâches
Ingénieur Civil des Mines 2ème
année Architecture des Systèmes Sûrs Module
SI144
- 2008-2009
- Françoise Simonot-Lion (simonot_at_loria.fr)
2Plan
- Les principes de base des exécutifs multi-tâches
temps réel - Tâches et Coopération de tâches (problèmes et
solutions) - Gestion du temps
- Le type tâche dans un exécutif Temps Réel
- Les problèmes posés par les exécutifs multi-tâches
3Plan
- Les principes de base des exécutifs multi-tâches
temps réel - Tâches et Coopération de tâches (problèmes et
solutions) - Gestion du temps
- Le type tâche dans un exécutif Temps Réel
- Les problèmes posés par les exécutifs
multi-tâches
?
4Tâches
- Tâche
- agent responsable de lexécution dun programme
(tâche vs processus) - Tâche immédiate
- tâche démarrée par un signal apparaissant à
linterface de lapplication (interruption) - Tâche différée
- tâche démarrée par une autre tâche
- Priorité
5Coopération de tâches
- Relations entre les tâches
- tâches dépendantes
- partage de ressources entre tâches
- synchronisation entre tâches
- communication entre tâches
- tâches indépendantes
6Partage de ressources - exclusion mutuelle -
section critique
- Ressources
- matérielles processeur - périphérique
(imprimante, ) - disque - logicielles un mot de données en mémoire - un
buffer de données - sous-programme fichier - Ressources partageables simultanément
- Ressources partageables séquentiellement
- Capacité dune ressource nombre daccès
simultanés
7Partage de ressources
- Quel est le problème ?
- Exemple
8Partage de ressources
- N est une ressource partageable séquentiellement
- La capacité de N est 1 (ressource critique)
9Partage de ressources
Suite dinstructions de la section critique
10Partage de ressources
- masquage / démasquage dinterruptions
- attente active
11Partage de ressources
- Solution 1 masquage / démasquage des
interruptions - Programmation de lexclusion mutuelle
- conditions initiales
- les interruptions sont démasquées
- protection de la section critique
- masquer les interruptions / entrée en SC
-
- ... les instructions de la SC ...
-
- démasquer les interruptions / sortie de SC
12Partage de ressources
- Solution 1 masquage / démasquage des
interruptions - Avantage
- ne nécessite que les services matériels de la
machine - Problème
- paralyse le système dentrées / sorties
- inopérant dans un contexte multi-processeurs
processeur 1 accumulateur A1
processeur 2 accumulateur A2
mémoire commune variable N
13Partage de ressources
- Solution 2 attente active
- il faut un mot accessible par toutes les
tâches - une instruction Test Set (TAS)
- typedef enum libre,occupe etat
- etat TAS (etat rp)
-
- etat aux
- aux rp rp occupe
- return (aux)
-
instruction non interruptible
14Partage de ressources
- Solution 2 attente active
- Programmation de lexclusion mutuelle
- conditions initiales
- etat r libre
- protection de la section critique
- do / entrée en SC
- while ( TAS(r) occupe )
- ... les instructions de la SC ...
- r libre / sortie de SC
15Partage de ressources
- Solution 2 attente active
- Avantage
- ne nécessite que les services matériels de la
machine (instruction TAS) - Problème
- la tâche attend activement occupation du
processeur pour tester cycliquement que la
ressource soit libre - insertion dans le code de lapplication des
mécanismes de protection de la ressource
16Partage de ressources
- Solution 3 verrou
- un type verrou
- des fonctions daccès
17Partage de ressources
- Solution 3 verrou
- Programmation de lexclusion mutuelle
- conditions initiales
- struct verrou v ouvert , ?
- protection de la section critique
- verrouiller (v) / entrée en SC
- ... les instructions de la SC ...
- deverrouiller (v) / sortie de SC
18Partage de ressources
- Solution 3 verrou
- Avantage
- efficace quelque soit la structure de la machine
- Problème
- les services verrouiller et deverrouiller
doivent être disponibles pour lapplication
exécutif temps réel - difficile à utiliser pour des ressources de
capacité gt 1
19Partage de ressources
- Solution 4 sémaphore
- un type semaphore
- des fonctions daccès
20Partage de ressources
Sémaphore à compte
- Solution 4 sémaphore
- Programmation de lexclusion mutuelle
- conditions initiales (n est la capacité de la
ressource) - struct semaphore s n , ?
- protection de la section critique
- P (s) / entrée en SC
- ... les instructions de la SC ...
- V (s) / sortie de SC
21Partage de ressources
- Solution 4 sémaphore
- Avantage
- efficace quelque soit la structure de la machine
- utilisable pour protéger laccès à une ressource
de capacité gt 1 - Problème
- les services P et S doivent être
disponibles pour lapplication exécutif temps
réel
22Synchronisation entre tâches
- Exprime le contrôle dune tâche sur une autre
tâche. - action directe
- une tâche agit directement sur une autre tâche
en la désignant explicitement - action indirecte
- une tâche agit sur un objet - cette action
pourra avoir un effet sur une ou plusieurs autres
tâches
23Synchronisation entre tâches
24Synchronisation entre tâches
25Synchronisation entre tâches
- 3 classes de solutions (exécutif multi-tâche)
communication
26Synchronisation entre tâches
- Solution 1 sémaphore
- Programmation de la synchronisation
- conditions initiales
- struct semaphore sync 0 , ?
- expression de la synchronisation
-
P(sync)
Sémaphore booléen
V(sync)
27Synchronisation entre tâches
- Solution 2 événements
- un type événement
- des fonctions daccès
typedef enum arrive, non_arrive
etat struct evenement e_etat e
e_liste f
- attendre
- signaler
- effacer
28Synchronisation entre tâches
- Solution 2 événements
- fonctions daccès
29Synchronisation entre tâches
- Solution 2 événement
- Programmation de la synchronisation
- conditions initiales
- struct evenement EVT effacer(EVT)
- expression
- de la synchronisation
-
attendre(EVT)
signaler(EVT)
30Synchronisation entre tâches
- Solution 3 boîtes aux lettres
- synchronisation communication
struct boite_aux_lettres b_buffer buf b_file
f
- un type boîte aux lettres
- des fonctions daccès
- pour stocker les tâches en attente
pour stocker les messages
- envoyer
- retirer
- constructeur de boîte aux lettres
31Synchronisation entre tâches
- Solution 3 boîte aux lettres
-
void envoyer (message m, struct boite_aux_lettres
bp) tache t_c , t if ( pleine(bp) )
t_ctache_courante()
bp-gtfajouter(t_c,bp-gtf) ... / t passe en
attente de place / ranger(m,bp-gtbuf)
if ( ! vide(bp-gtf) ) tchoisir(bp-gtf)
bp-gtfoter(t,bp-gtf) ... / t passe prête
/
fonction daccès envoyer
32Synchronisation entre tâches
- Solution 3 boîte aux lettres
-
void retirer (message mp, struct
boite_aux_lettres bp) tache t_c , t
if ( vide(bp-gtf) ) t_ctache_courante()
bp-gtfajouter(t_c,bp-gtf) ... /t_c passe
en attente de message / (mp)
extraire(b-gtbuf) if ( ! vide(bp-gtf) )
tchoisir(bp-gtf) bp-gtfoter(t,bp-gtf)
... / t passe prête /
fonction daccès retirer
33Synchronisation entre tâches
- Solution 3 boîte aux lettres
- Programmation de la synchronisation
- conditions initiales
- struct boite_aux_lettres BAL /
construction / - expression
- de la synchronisation
-
retirer(M1,BAL)
envoyer(M2,BAL)
34Synchronisation entre tâches
- Solution 4 rendez-vous
- synchronisation forte communication
- Définition
- Un rendez-vous est un objet qui permet à 2 tâches
de se synchroniser en un point de leur exécution - la première des tâches, arrivée en ce point,
attend lautre - lorsque les 2 tâches ont atteint ce point, une
séquence de code unique est exécutée - puis les tâches continuent chacune leur exécution
propre. - Exemple les rendez-vous sont implantés dans
le langage Ada
35Synchronisation entre tâches
- Solution 4 rendez-vous
- synchronisation forte communication
implémenté sous forme de file
- un type rendez-vous
-
- des fonctions daccès - syntaxe Ada
- - symétrie du comportement
- - dissymétrie dans lexpression
36Synchronisation entre tâches
- Solution 4 rendez-vous
- synchronisation forte communication
37Synchronisation entre tâches
- Solution 4 rendez-vous (syntaxe Ada)
- Programmation de la synchronisation
- conditions initiales
- entry RV -- construction
- expression
- de la synchronisation
-
entry RV
T2.RV
accept RV
38Synchronisation entre tâches
- Solution 4 rendez-vous (syntaxe Ada)
- Programmation de la synchronisation
- conditions initiales
- entry RV -- construction
- expression
- de la synchronisation
-
entry RV
accept RV
T1.RV
39Plan
- Les principes de base des exécutifs multi-tâches
temps réel - Tâches et Coopération de tâches (problèmes et
solutions) - Gestion du temps
- Le type tâche dans un exécutif Temps Réel
- Les problèmes posés par les exécutifs
multi-tâches
?
40Gestion du temps
- le temps qui passe
- un objet en mémoire pour mémoriser la date
courante
Variable heure_courante
- des services daccès à cet objet (exécutif temps
réel)
typedef struct int jour,mois,annee
int heures,minutes,secondes int ms,us
heure heure get_heure_courante (
) void set_heure_courante (heure h)
41Gestion du temps
- le temps qui passe (mécanismes internes)
- un dispositif signalant lécoulement dun
intervalle de temps - timer
- interruption associée
- résolution dhorloge dt
- une tâche immédiate de gestion de linterruption
associée au timer
42Gestion du temps
- planifier lavenir ...
- un objet mémorisant les actions à faire et la
date prévue - échéancier liste de fiches ordonnées par date
croissante
début
. . .
nil
A1 action D1 heure
A2 action D2 heure
Ai action Di heure
une fiche
Propriété get_heure_courante( ) ? D1 ? D2 ? . .
. ? Di
43Gestion du temps
- planifier lavenir ...
- des informations
- typedef struct
- int jour,mois,annee
- int heures,minutes,secondes
- int ms,us
- heure
- typedef enum . . . action
- typedef struct fiche_
- action A
- heure D
- struct fiche_ S fiche
- struct fiche debut
- des services daccès à léchéancier
fiche planifier_action(action a, heure
date) void decommander_action(fiche f)
44Gestion du temps
- planifier lavenir ... (mécanismes internes)
- fiche planifier_action(action a,heure date)
- insertion dune information à sa place dans une
liste ordonnée -
- décommander_action(fiche f)
- suppression dun élément dans une liste ordonnée
action, heure
ordre dates des fiches croissantes
une fiche
45Gestion du temps
- traiter une action planifiée à la date prévue ...
(mécanisme interne) -
timer
- tâche immédiate de gestion du timer
- void ssp_timer ( )
- heure dc
- incrémenter_heure_courante ( )
- dc get_date_courante()
- while ((debut ! null) (debut-gtD dc))
- traiter(debut-gtA)
- debut oter_premier(debut)
-
46Gestion du temps
- traiter une action planifiée à la date prévue ...
(mécanisme interne) - exemple
47Plan
- Les principes de base des exécutifs multi-tâches
temps réel - Tâches et Coopération de tâches (problèmes et
solutions) - Gestion du temps
- Le type tâche dans un exécutif Temps Réel
- Les problèmes posés par les exécutifs
multi-tâches
?
48Le type tâche dans les exécutifs temps réel
- une tâche est un objet caractérisé par
- priorité (calculée hors ligne ou en ligne)
- état courant
49Le type tâche dans les exécutifs temps réel
- priorité dune tâche
- caractéristique utilisée par lordonnanceur pour
lattribution du processeur à des tâches
concurrentes (voir chapitre Ordonnancement) -
- ordonnanceur des tâches immédiates
- (niveaux dinterruption)
- ordonnanceur des tâches différées
50Le type tâche dans les exécutifs temps réel
Tâche crée
Tâche participant à lordonnancement
51Le type tâche dans les exécutifs temps réel
- Transition détats des tâches
inexistante
52Plan
- Les principes de base des exécutifs multi-tâches
temps réel - Tâches et Coopération de tâches (problèmes et
solutions) - Gestion du temps
- Le type tâche dans un exécutif Temps Réel
- Les problèmes posés par les exécutifs
multi-tâches
?
53Les problèmes posés par les exécutifs temps réel
- Propriétés requises par une application temps
réel - safety (sûreté) something bad will not happen
(rien de mauvais narrivera) - liveness (vivacité ) something good will happen
(il se passera quelque chose de bon)
54Les problèmes posés par les exécutifs temps réel
Tâche 1 P(S1) P(S2) V(S2) V(S1)
Tâche 2 P(S2) P(S1) V(S1) V(S2)
t
55Les problèmes posés par les exécutifs temps réel
- Famine (starvation - lockout)
- Une famine se produit lorsquune tâche qui veut
accéder à une ressource ne peut jamais le faire
car cette ressource est indéfiniment détenue par
dautres tâches. - Exemple tâche de forte priorité et occupant
indéfiniment le processeur
56Les problèmes posés par les exécutifs temps réel
- Exemple famine de rédacteurs dans un modèle
lecteur/rédacteur (les lecteurs sont
prioritaires sur les rédacteurs)
- Les lecteurs excluent les rédacteurs
- Les lecteurs ne sexcluent pas entre eux
- Les rédacteurs sexcluent entre eux
- Les rédacteurs excluent les lecteurs
R2requête écriture!
R1requête écriture!
L2requête lecture
L4requête lecture
L4requête lecture
L1requête lecture
L3requête lecture
t
L1
L2
L3
L4
R1
R2
Accès à la ressource