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