Exercices

sur l'Ordonnancement de l'UC

 

Rappels

Définition d'un sémaphore

Un sémaphore est une entité informatique composée de données (entier, file d'attente) et de méthodes ( Init, P et V ).

Un sémaphore est utilisé :

  • soit pour l'allocation de ressources (initialisation de l'entier du sémaphore à 1)
  • soit pour la synchronisation de processus (initialisation de l'entier du sémaphore à 0)
Barrière de synchronisation

Pour effectuer une barrière de synchronisation, il faut utiliser plussieurs sémaphores

 

Sémaphores et Programmation Parallèle

Supposons :

  • T1 avant T3
  • T1 avant T4
  • T2 avant T4

Pour programmer ce système de tâches, on doit utiliser au moins un sémaphore.

Choisissons de mettre ce sémaphore entre T1 et T4 pour assurer la synchronisation de ces deux tâches, on aura:

  Init( S, 0 );
  ParBegin
    { T1; V( S ); T3 }  // T1 donne le feu Vert
    { T2; P( S ); T4 }  // T4 attend la Permisson de s'exécuter
   ParEnd
Écrire un programme avec un sémaphore entre les taches T1 et T3
Écrire un programme avec un sémaphore entre les taches T2 et T4
Écrire un programme avec trois sémaphores
  • un sémaphore entre T1 et T3
  • un sémaphore entre T1 et T4
  • un sémaphore entre T2 et T4